Tag: cmake

cmake无法findopenssl

我试图安装一个软件,它使用cmake来安装自己,当我在commandlin cmake .. 它给了我下面的错误在这个文件中,CMakeLists.txt ——–线—> find_package(OpenSSL REQUIRED): – cmake .. — Could NOT find Git (missing: GIT_EXECUTABLE) ZLib include dirs: /usr/include ZLib libraries: /usr/lib/arm-linux-gnueabihf/libz.so Compiling with SSL support CMake Error at /usr/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message): Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR) Call […]

用cmake处理头文件的依赖关系

我正在一个小型的C ++项目上使用CMake,到目前为止,它的工作很好…一个扭曲:x 当我更改头文件时,通常需要重新编译一些源文件(包括直接或间接包含的文件),但似乎cmake只检测到一些源文件需要重新编译,导致损坏的状态。 我可以通过清除项目并从头开始重build来解决这个问题,但是这样规避了使用make实用程序的目标:只重新编译需要的内容。 所以,我想我做错了什么。 我的项目非常简单: 一个顶级目录,所有资源都坐在那里,主CMakeLists.txt位于那里 一个包含所有公共头文件的“include”目录(在各种子目录中) 一个源文件的所有子目录的“src”目录,src CMakeLists.txt位于那里 每个“src”目录下的子目录都有一个CMakeLists.txt文件 主目录有: cmake_minimum_required(VERSION 2.8) project(FOO) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) # Compiler Options set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++0x -Wall -Wextra -Werror") include_directories($(FOO_SOURCE_DIR)/include) add_subdirectory(src) “src”目录: add_subdirectory(sub1) add_subdirectory(sub2) add_subdirectory(sub3) add_subdirectory(sub4) add_executable(foo main.cpp) target_link_libraries(foo sub1 sub2 sub3 sub4) 其中, sub4取决于sub3 ,取决于sub1取决于sub1 和一个子目录(sub3)的例子: set(SUB3_SRCS File1.cpp File2.cpp File3.cpp File4.cpp File5.cpp File6.cpp ) add_library(sub3 ${SUB3_SRCS}) […]

有CMakerecursion扫描文件夹?

如何设置CMakerecursion扫描给定的目录并确定源文件列表? 我的项目是一个共享库。 我有一个类似于这样的文件夹结构: / src/ # Source files in an arbitrary tree include/ # Headers, tree mirrors that of the src/ folder examples/ # Executable code examples that link against the library CMakeLists.txt 我想避免: 用无穷的CMakeLists.txt文件污染src/和include/目录 每次更改文件夹结构时都必须更改和修改脚本 不过,每个例子都有自己的构build脚本。

有关在CMake / CDash中使用gcov的详细指南?

我正在使用CMake和我的项目,并build立一个连续/夜间build设的cdash服务器。 一切正常,通过设置一个crontab,我们每小时/每晚的构build/testing结果自动上传到我们的cdash服务器。 我的下一步是将testing覆盖率报告添加到构build。 我在这里find这个文档http://www.cmake.org/Wiki/CTest:Coverage,但坦率地说,这有点远离实用指南。 目前我已经添加了所需的标志(而不是-fprofile-arcs -ftest-coverage ,我发现–coverage更好),编译过程生成.gcno文件。 但后来我卡住了。 命令 make NightlyCoverage 似乎没有做任何事情。 有谁能告诉我下一步该做什么? 我想要的结果就是在做make NightlyCoverage ,覆盖报告生成并上传到cdash服务器。

CMAKE_CURRENT_SOURCE_DIR和CMAKE_CURRENT_LIST_DIR之间的区别

从Wiki: CMAKE_CURRENT_SOURCE_DIR这是当前处理的CMakeLists.txt所在的目录 CMAKE_CURRENT_LIST_DIR (自2.8.3开始)这是当前正在处理的列表文件的目录。 从文档: CMAKE_CURRENT_SOURCE_DIR:当前正在处理的源目录的path。 这是cmake正在处理的源目录的完整path。 CMAKE_CURRENT_LIST_DIR:当前正在处理的列表文件的完整目录。 当CMake处理项目中的列表文件时,此variables将始终设置为当前正在处理的列表文件(CMAKE_CURRENT_LIST_FILE)所在的目录。 该值具有dynamic范围。 当CMake开始处理源文件中的命令时,它将此variables设置为该文件所在的目录。 当CMake完成处理来自文件的命令时,它恢复以前的值。 因此,macros或函数中variables的值是调用调用堆栈最底层条目的文件的目录,而不是包含macros或函数定义的文件的目录。 这些variables在什么情况下会有不同的值?

目标输出文件的path

我有一个由add_library创build的.so库目标,并且需要将该库的绝对path传递给外部脚本。 现在我有${LIBRARY_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}LangShared${CMAKE_SHARED_LIBRARY_SUFFIX} ( LIBRARY_OUTPUT_PATH在我的CMakeLists.txt定义)。 这看起来像是硬编码给我的,因为一旦目标被重命名或其一些属性被改变,它就会中断。 有没有办法获得add_library的输出的绝对path?

CMake:如何通过预处理macros

我如何将macros传递给预处理器? 例如,如果我想编译我的代码的一部分,因为用户想编译unit testing,我会这样做: #ifdef _COMPILE_UNIT_TESTS_ BLA BLA #endif //_COMPILE_UNIT_TESTS_ 现在我需要将这个值从CMake传递给预处理器。 设置一个variables不起作用,那么我该如何做到这一点?

使用CMake生成C#项目

我正试图在Windows上现有的C ++ CMake代码库中生成一个C#项目。 经过一番研究,我只能find两个为CMake构build自己的CSharp编译器的项目: gdcm和kde 。 我尝试了他们两个。 不幸的是,第一个未能生成一个C#项目。 相反,它创build了一个包含cs文件的VS C ++项目,并且由于为链接器设置了C ++标记,所以构build总是失败并出错。 在对他们提供的示例项目进行实验之后,我想知道这是否是由于“Visual Studio 8 2005”代码生成器的限制? 第二个项目主要针对莫诺,所以我也没有成功。 有没有人有积极的经验,build设使用这些CMake模块或其他东西之一的C#项目?

CMake中的include_directories和target_include_directories有什么区别?

我有我的C ++代码的目录结构,如下所示: | |->include |->src 我正在为我的代码写一个CMakeLists.txt文件。 我想了解CMake include_directories和target_include_directories之间的区别。 它们的用法和为了添加我应该使用的包含文件path有什么区别?

CMake add_custom_command没有运行

我试图在构build过程中使用add_custom_command来生成一个文件。 该命令似乎没有运行,所以我做了这个testing文件。 cmake_minimum_required( VERSION 2.6 ) add_custom_command( OUTPUT hello.txt COMMAND touch hello.txt DEPENDS hello.txt ) 我试过跑步: cmake . make 而hello.txt没有生成。 我做错了什么?