CMake 目标设置问题

标签 cmake

想象一下下面的情况:

我有“project”文件夹,在这个文件夹中我有“src”文件夹和2个文件“1.cpp”和“2.cpp”。 每个 .cpp 都生成一个可执行文件。在 cmake 生成 makefile 之后,我希望能够执行以下操作:

  • 指定我要构建可执行文件“1”或“2”或两者
  • 指定我想在 Debug模式下构建所有可执行文件
  • 指定我想在 Release模式下构建所有可执行文件
  • 指定我想在发布和 Debug模式下构建所有可执行文件

所以我希望能够编写以下内容:

  • (c)制作/任何东西 1
  • (c)制作/任何东西 2
  • (c)make/anything all-release
  • (c)make/anything all-debug
  • (c)make/anything all-debug-and-release

实现此目标的最佳方法是什么? 非常感谢!

最佳答案

您需要在根目录中有一个顶级 CMakeLists.txt,它知道您的“src”目录(使用 add_subdirectory)。然后在“src”中,您将需要另一个 CMakeLists.txt,它指定如何编译您的可执行文件。这本身就可以说,例如:

make 1 2

至于调试/ Release模式,可以通过变量 CMAKE_BUILD_TYPE 在 cmake 中指定。但是,如果未指定变量,我通常会在顶层指示它进入调试或 Release模式:

IF( NOT CMAKE_BUILD_TYPE )
  SET( CMAKE_BUILD_TYPE Debug ) 
  SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG" )
ENDIF( NOT CMAKE_BUILD_TYPE )

另一种在不修改 CMakeLists.txt 的情况下编辑构建类型的方法是做

make edit_cache

这将打开一个带有变量的 ncurses 对话框,CMAKE_BUILD_TYPE 其中。

关于CMake 目标设置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5203054/

相关文章:

CMake 自定义构建步骤 PRE_LINK/PRE_BUILD 不起作用

visual-studio-2010 - 如何使用 CMake 设置 VC++ 目录

static - CMake:使用同一静态库的多个子项目

opencv - 在 Win7 32 位上使用代码块 10.05 构建 opencv2.4.2(使用 cmake 2.8.9)时出错。

c - Cmake/Autotools 对于非标准编译器有用吗?

c++ - CPack DEB 生成器 : control-file-has-bad-permissions mdsums 0644 ! = 0644

python - CMake:检查 Python3 和 Python 包是否存在

ios - CMake find_package 在为 iOS 构建时忽略 PATHS 选项

c++ - 使用 Cmake 编译 boost 测试

c++ - 如何在没有调试符号和优化的情况下创建 cmake 构建配置?