自动使用该目录作为C进行项目名称(Automatically use the directory a

2019-07-31 11:26发布

我在使用的CMake来管理我的编译系统相当新的,所以如果我是愚蠢的,这是一个坏主意,请让我知道。

我希望能够建立我的CMakeLists.txt文件,这样当我做

project( ... )

该目录的名称变成自动的项目名称。 我想这样做,因为我觉得这样方便,能够对一个项目的整个目录复制为另一个起点。 不过,虽然我总是目录重命名为有意义的事情,我经常忘记改变project(name)中的CMakeLists.txt文件的行,然后我结束了多个项目在我使用相同的名称,它得到构建环境开放混乱。

理想情况下,如果在目录名称空间,他们会被替换为下划线。

CMake的能做到这一点? 而且它是出于某种原因,我没有看到一个坏主意?

Answer 1:

您可以通过添加以下到您的CMakeLists.txt开始实现这一点:

get_filename_component(ProjectId ${CMAKE_CURRENT_SOURCE_DIR} NAME)
string(REPLACE " " "_" ProjectId ${ProjectId})
project(${ProjectId})

我看不出有问题,这样的一次性项目,虽然我猜生产项目通常会有这将明确在设定一个预定义的名字project的命令。

当你提到你“复制一个项目的整个目录的另一个出发点”,我想你不包括构建树,当你复制? CMake的是不是真的能够处理移动构建树 。



Answer 2:

我觉得CMAKE_CURRENT_LIST_DIR更适合这种情况下

get_filename_component(ProjectId ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REPLACE " " "_" ProjectId ${ProjectId})
project(${ProjectId} C CXX)


文章来源: Automatically use the directory as the project name in CMake
标签: cmake