CMake针对设置问题

时间:2011-03-05 09:57:25

标签: cmake

想象一下以下情况:

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

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

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

  • (c)make / anything 1
  • (c)make / anything 2
  • (c)make / anything all-release
  • (c)make / anything all-debug
  • (c)make / anything all-debug-and-release

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

1 个答案:

答案 0 :(得分:3)

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

make 1 2

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

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