我想使用全局标志来编译一个项目,这意味着在我指定的顶层CMakeLists.txt文件中: ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x ) 但是,对于一个子目录中的特定文件(比如说“foo.cpp”),我希望将编译标志切换为不应用-Weffc ++(包含商业库,我无法更改)。 为了简化这个情况,只使用-Wall,我试过了: SET_SOURCE_FILES_PROPERTIES( foo.cpp PROPERTIES COMPILE_FLAGS -Wall ) ADD_EXECUTABLE( foo foo.cpp ) ,没有工作。 我也试过了 SET_PROPERTY( SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall ) ADD_EXECUTABLE( foo foo.cpp ) 和 ADD_EXECUTABLE( foo foo.cpp ) SET_TARGET_PROPERTIES( foo PROPERTIES COMPILE_FLAGS -Wall ) ,其中既没有工作。 最后,我尝试删除这个定义: REMOVE_DEFINITIONS( -Weffc++ ) ADD_EXECUTABLE( foo foo.cpp ) ADD_DEFINITIONS( […]
我正在尝试使用CMake来获得一个跨平台的构build系统。 现在这个软件有一些依赖关系。 我自己编译它们,并将它们安装在我的系统上。 一些已安装的示例文件: — Installing: /usr/local/share/SomeLib/SomeDir/somefile — Installing: /usr/local/share/SomeLib/SomeDir/someotherfile — Installing: /usr/local/lib/SomeLib/somesharedlibrary — Installing: /usr/local/lib/SomeLib/cmake/FindSomeLib.cmake — Installing: /usr/local/lib/SomeLib/cmake/HelperFile.cmake 现在CMake有一个find_package() ,它打开一个Find*.cmake文件并在系统的库之后search并定义一些像SomeLib_FOUND等variables。 我的CMakeLists.txt包含这样的东西: set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}") find_package(SomeLib REQUIRED) 第一个命令定义了在Find*.cmake之后CMakesearch的Find*.cmake并且我添加了SomeLib所在的目录,所以find_package()按预期工作。 但是这find_package() ,因为find_package()存在的原因之一就是find_package()非交叉平台的硬编码path。 这通常如何完成? 我是否应该将SomeLib的cmake/目录SomeLib到我的项目中并相对设置CMAKE_MODULE_PATH ?
我想构build我的项目,包括生产源(在src子文件夹)和testing(在test子文件夹)。 我正在使用CMake来build立这个。 作为一个最小的例子,我有以下文件: 的CMakeLists.txt: cmake_minimum_required (VERSION 2.8) project (TEST) add_subdirectory (src) add_subdirectory (test) SRC /的CMakeLists.txt: add_executable (demo main.cpp sqr.cpp) SRC / sqr.h #ifndef SQR_H #define SQR_H double sqr(double); #endif // SQR_H SRC / sqr.cpp #include "sqr.h" double sqr(double x) { return x*x; } src / main.cpp – 使用sqr,并不重要 testing/的CMakeLists.txt: find_package(Boost COMPONENTS system filesystem unit_test_framework REQUIRED) […]
我正在开发一个开源的C ++项目,用于在Linux和Windows上编译的代码。 我使用CMake在Linux上构build代码。 为了便于开发设置和政治原因,我必须坚持在Windows上的Visual Studio项目文件/编辑器(例如,我不能切换到Code :: Blocks )。 我看到使用CMake生成Visual Studio文件的说明,如下所示。 你有没有使用CMake之前生成Visual Studio文件? 你的经历如何? 假设我想添加一个新的文件到我的项目中。 这是什么工作stream程?
我想知道是否有任何Makefile ( make )和CMakeLists.txt ( cmake )的代码都做同样的事情(唯一的区别是一个是写在make和另一个在cmake )。 我试图寻找'cmake vs make',但我从来没有find任何代码比较。 理解差异是非常有用的,即使只是一个简单的例子。
我正在使用CMake构build一个大型的库,我希望用户能够select性地启用/禁用构build过程的某些部分。 我如何添加命令行选项到我的CMake构build,例如,以便用户可以input类似cmake –build-partone –nobuild-parttwo –dothis=true –dothat=false ..东西cmake –build-partone –nobuild-parttwo –dothis=true –dothat=false .. 显然,OPTION关键字将创build可以从CMake GUI设置的variables,但我无法弄清楚如何从命令行执行此操作。
在CMake中,我想创build一个目录,如果它不存在。 我怎样才能做到这一点?
我们有一套跨平台的CMake构build脚本 ,我们支持使用MSVC和GCC构build。 我们正在尝试Clang ,但我不知道如何testing编译器是否与我们的CMake脚本Clang。 我应该testing一下,看看编译器是否是Clang? 我们目前使用MSVC和CMAKE_COMPILER_IS_GNU<LANG>分别testingMSVC和GCC。
我曾经在网上看过一些关于CMake中预编译头文件的支持。 他们都显得有点全面,每个人都有自己的做法。 目前做什么是最好的方法?
任何人都可以提供良好的CMake教程的链接,除非非常昂贵和难以获得的官方吗? 在使用CMake for Fortran项目时特别有趣,但对任何好的教程都会感激。 更新。 我已经find的是Kitware Public Wiki中的CMake文章 。 Fortran的例子是绝对没用的。 =(同样在等待答案时,我正在玩SCons ,看起来不错=)