想象一下下面的情况:
我有“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/