Articles of cmake

CMake错误:在这个项目中使用下列variables,但它们被设置为NOTFOUND

我正在尝试使用tar文件whalebot-0.02.00.tar.gzconfigurationwhalebot爬虫。 我已经正确提取它: root@Admin1:~/dls# tar xvzf whalebot-0.02.00.tar.gz 之后,我想configuration它: root@Admin1:~/dls/whalebot# ./configure 它给我错误: bash:./configure:没有这样的文件或目录 我也运行命令: root@Admin1:~/dls/whalebot# cmake ./ 它给了我以下结果: root@Admin1:~/dls/whalebot# cmake ./ — The C compiler identification is GNU — The CXX compiler identification is GNU — Check for working C compiler: /usr/bin/gcc — Check for working C compiler: /usr/bin/gcc — works — Detecting C compiler ABI info […]

cmake:如何在安装时更改文件权限?

我有一个文件设置了660标志,但是我想安装700标志设置。 我该怎么做? 如何更改文件权限,而不更改源文件的权限? 我的安装命令是这样的: install( FILES common.sh DESTINATION /rootfs/usr/bin ) 这是我试过的(但不起作用): install( FILES common.sh FILE_PERMISSIONS "600" DESTINATION /rootfs/usr/bin )

在CentOS上用Python模块安装OpenCV出错了

当我运行这个命令来安装Python模块的OpenCV cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_EXAMPLES=ON -DBUILD_NEW_PYTHON_SUPPORT=ON -DINSTALL_PYTHON_EXAMPLES=ON -DPYTHON_EXECUTABLE=/usr/local/bin/python2.7 -DPYTHON_INCLUDE_DIR=/usr/local/include/python2.7/ -DPYTHON_LIBRARY=/usr/local/lib/python2.7/config/libpython2.7.a -DPYTHON_NUMPY_INCLUDE_DIR=/usr/local/lib/python2.7/site-packages/numpy/core/include/ -DPYTHON_PACKAGES_PATH=/usr/local/lib/python2.7/site-packages/ -DBUILD_PYTHON_SUPPORT=ON 我得到这个错误消息。 /usr/bin/ld: /usr/local/lib/python2.7/config/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC /usr/local/lib/python2.7/config/libpython2.7.a: could not read symbols: Bad value collect2: ld returned 1 exit status make[2]: *** [lib/cv2.so] Error 1 make[1]: *** [modules/python/CMakeFiles/opencv_python.dir/all] Error […]

OpenCV_FOUND为FALSE,因此包“OpenCV”被认为是未find的

我目前有问题,试图让我的cmake看到我的opencv。 我已经安装了opencv,可以运行一些示例问题,并且有一些错误与我在cmake文件中得到的错误相同(当通过terminal运行示例程序时) 我试图改变环境variables的path,如http://answers.opencv.org/question/35125/cmake-linking-error-opencv_found-to-false-ubuntu/ 我的bashrc文件现在看起来像 CMAKE_PREFIX_PATH=/home/durham/Desktop/OpenCV/opencv-2.4.9:$CMAKE_PREFIX_PATH CPATH=/home/durham/Desktop/OpenCV/opencv-2.4.9/include:$CPATH LD_LIBRARY_PATH=/home/durham/Desktop/OpenCV/opencv-2.4.9/lib:$LD_LIBRARY_PATH PATH=/home/durham/Desktop/OpenCV/opencv-2.4.9bin:$PATH PKG_CONFIG_PATH=/home/durham/Desktop/OpenCV/opencv-2.4.9/lib/pkgconfig:$PKG_CONFIG_PATH PYTHONPATH=/home/durham/Desktop/OpenCV/opencv-2.4.9/lib/python2.7/dist-packages:$PYTHONPATH 和/etc/ld.so.conf的内容是 include /etc/ld.so.conf.d/*.conf include /home/durham/Desktop/OpenCV/opencv-2.4.9 我试图运行的cmake文件看起来像这样 cmake_minimum_required(VERSION 2.6) if(POLICY CMP0020) cmake_policy(SET CMP0020 NEW) endif(POLICY CMP0020) SET(CMAKE_VERBOSE_MAKEFILE TRUE) SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/config) ADD_DEFINITIONS(-DQT_THREAD_SUPPORT -D_REENTRANT -DQT_NO_DEBUG -DIQRMODULE) SET(QT_MT_REQUIRED TRUE) find_package(Qt5Widgets) FIND_PACKAGE(OpenCV REQUIRED) IF(NOT DEFINED IQR_INCLUDE_DIR) set (IQR_INCLUDE_DIR "/usr/include/iqr") #default for linux ENDIF(NOT DEFINED IQR_INCLUDE_DIR) IF(NOT EXISTS ${IQR_INCLUDE_DIR}) message(STATUS "not […]

从现有的Makefile创buildCMakeLists文件

我想用cmake为C ++项目生成我的构build文件。 我有一个现有的Makefile 。 我有问题使用标准的cmake语法生成这个Makefile 。 如何在-lstdc++ -lpthread -lboost_thread-mt的TARGET_LINK_LIBRARIES部分包含标准C ++库,如-lstdc++ -lpthread -lboost_thread-mt ? 或者应该将这些文件包含在ADD_DEPENDENCIES部分。 (或)是否有一个简单的工具从Makefile生成一个CMakeList.txt文件

提升日志,GCC 4.4和CMake

我正在尝试使用GCC 4.4.5,CMake 2.8.2和Boost 1.53.0在Linux上运行一个简单的boost.log示例。 编译boost和boost日志成功了,但是当我的testing程序连接到boost.log时,我一直在收到问题。 我使用下面的CMakeLists.txt文件: cmake_minimum_required(VERSION 2.8) project(QuantibBoostLogTest) # Include boost headers set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_MULTITHREADED ON) find_package(Threads) find_package(Boost 1.53.0 COMPONENTS thread date_time filesystem system log log_setup REQUIRED) if(Boost_FOUND) include_directories( ${Boost_INCLUDE_DIRS} ) link_libraries(${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) else(Boost_FOUND) message(FATAL_ERROR "Cannot build Quantib Boost Log test without Boost. Please set Boost_DIR.") endif(Boost_FOUND) add_executable(quantibBoostLogTest boost_log_test.cxx) install(TARGETS quantibBoostLogTest DESTINATION .) CMake确实检测到boost库,但我仍然得到链接器错误,主要是forms: […]

包含<emmintrin.h>时,#error“SSE2指令集未启用”

我正在尝试用cmake编译一些C ++代码,并使用include <emmintrin.h>获得以下的错误: #error "SSE2 instruction set not enabled" 我有一个带有Linux(Mint)系统(内核3.5)的英特尔赛扬双核处理器。 根据维基百科,赛扬双核能够执行SSE2指令,sse2标志是根据/proc/cpuinfo 。 但是这个问题的作者提到了英特尔赛扬对SSE的有限支持。 我已经尝试在我的CMakeLists.txt使用SSE编译器选项: set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-msse -msse2 -msse3") ..但没有任何改变。 cmake . 工作正常,但给上面的错误信息。 是否必须更改CMakeLists.txt中的设置,或者赛扬双核是否完全支持SSE2?

dynamic加载库和共享全局符号

由于我在dynamic加载的库中观察到全局variables的一些奇怪的行为,我写了下面的testing。 首先我们需要一个静态链接库:头文件test.hpp #ifndef __BASE_HPP #define __BASE_HPP #include <iostream> class test { private: int value; public: test(int value) : value(value) { std::cout << "test::test(int) : value = " << value << std::endl; } ~test() { std::cout << "test::~test() : value = " << value << std::endl; } int get_value() const { return value; } void set_value(int […]

CMake不知道Qt4 qmake在哪里

我正在使用Debian操作系统,我试图指向cmake,我的Qt4在哪里。 我尝试构buildqjson库和CMakeLists.txt: http ://pastebin.com/fKNp0Qgy 我得到: Qt5 not found, searching for Qt4 qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory CMake Error at /usr/share/cmake-2.8/Modules/FindQt4.cmake:1386 (message): Found unsuitable Qt version "" from NOTFOUND, this code requires Qt 4.x Call Stack (most recent call first): CMakeLists.txt:55 (FIND_PACKAGE) — Configuring incomplete, errors occurred! 我不熟悉CMake和Qtconfiguration,但是我很好奇为什么设置强制CMake FIND_PACKAGE查看qmake的“/ usr / […]

用cmake重新使用静态库的自定义生成文件

我想这将是一个通用的问题,包括与cmake内现有的makefile的图书馆; 但是这是我的背景 – 我试图将Scintilla包含在另一个CMake项目中,并且遇到以下问题: 在Linux上,scintilla在(例如) ${CMAKE_CURRENT_SOURCE_DIR}/scintilla/gtk目录中有一个makefile。 如果你运行在这个目录下(像往常一样),你会得到一个${CMAKE_CURRENT_SOURCE_DIR}/scintilla/bin/scintilla.a文件 – 我猜(这个是静态库)。 现在,如果我尝试使用cmake的ADD_LIBRARY ,我必须在cmake中手动指定scintilla的源代码 – 我宁可不要ADD_LIBRARY ,因为我已经有一个makefile。 所以,我宁愿打电话给通常的闪烁体 – 然后指示CMAKE以某种方式引用scintilla.a 。 ( 我想这样做不能保证跨平台的兼容性 – 但是请注意,目前跨平台对我来说不是问题;我只是想构build闪烁体作为这个项目的一部分,已经使用cmake,只能在Linux中 ) 所以,我已经尝试了一下: ADD_CUSTOM_COMMAND( OUTPUT scintilla.a COMMAND ${CMAKE_MAKE_PROGRAM} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scintilla/gtk COMMENT "Original scintilla makefile target" ) …然后,add_custom_command添加一个“ 没有输出的目标 ”; 所以我正在尝试几种方法来构build,所有这些都失败了(错误给出的评论): ADD_CUSTOM_TARGET(scintilla STATIC DEPENDS scintilla.a) # Target "scintilla" of type UTILITY may not be linked […]