CMake目标设置问题
想象一下以下情况: 我有“project”文件夹,在这个文件夹中我有“src”文件夹和两个文件“1.cpp”和“2.cpp”。 每个.cpp生成一个可执行文件。在cmake生成makefiles后,我希望能够执行以下操作:CMake目标设置问题,cmake,Cmake,想象一下以下情况: 我有“project”文件夹,在这个文件夹中我有“src”文件夹和两个文件“1.cpp”和“2.cpp”。 每个.cpp生成一个可执行文件。在cmake生成makefiles后,我希望能够执行以下操作: 指定我要生成可执行文件“1”或“2”或两者 指定我要在调试模式下生成所有可执行文件 指定我要在发布模式下生成所有可执行文件 指定我要在发布和调试模式下生成所有可执行文件 因此,我希望能够写出以下内容: (c) 做任何事 (c) 做任何事 (c) 把任何东西都放出来 (c
- 指定我要生成可执行文件“1”或“2”或两者
- 指定我要在调试模式下生成所有可执行文件
- 指定我要在发布模式下生成所有可执行文件
- 指定我要在发布和调试模式下生成所有可执行文件
- (c) 做任何事
- (c) 做任何事
- (c) 把任何东西都放出来
- (c) 使/任何东西都调试
- (c) 制作/发布所有调试和发布的内容
非常感谢 在根目录中需要一个顶级的CMakeLists.txt,它知道您的“src”目录(使用
add_子目录
)。然后在“src”中,您将需要另一个CMakeLists.txt,它指定如何编译可执行文件。这本身就可以说,例如:
make 1 2
至于调试/发布模式,可以通过变量cmake\u BUILD\u 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\u BUILD\u TYPE
在cmake文件中或运行make时指定需要调试/发布模式是不常见的(如果cmake生成了一个包/tarball/任何东西,则可能不是真的-我还不需要它)。通常,在设置特定构建时,可以通过使用CMAKE gui
指定CMAKE\u build\u TYPE
来指定Release/Debug。您可以使用if
检查构建类型,以基于cmake文件中的构建类型包括/排除项。我没有这样做,但我确实使用了if(CMAKE\u HOST\u WIN32)
来避免在Linux上构建特定于WIN32的代码,原理是一样的。为了一次构建多个配置,我总是使用单独的构建树,并使用脚本在每个文件夹中调用make。我不认为这是个好方法,但它完成了任务。谢谢你的回复。我将发布另一个关于同时构建多个配置的问题。