我在使用的CMake来管理我的编译系统相当新的,所以如果我是愚蠢的,这是一个坏主意,请让我知道。
我希望能够建立我的CMakeLists.txt文件,这样当我做
project( ... )
该目录的名称变成自动的项目名称。 我想这样做,因为我觉得这样方便,能够对一个项目的整个目录复制为另一个起点。 不过,虽然我总是目录重命名为有意义的事情,我经常忘记改变project(name)
中的CMakeLists.txt文件的行,然后我结束了多个项目在我使用相同的名称,它得到构建环境开放混乱。
理想情况下,如果在目录名称空间,他们会被替换为下划线。
CMake的能做到这一点? 而且它是出于某种原因,我没有看到一个坏主意?
您可以通过添加以下到您的CMakeLists.txt开始实现这一点:
get_filename_component(ProjectId ${CMAKE_CURRENT_SOURCE_DIR} NAME)
string(REPLACE " " "_" ProjectId ${ProjectId})
project(${ProjectId})
我看不出有问题,这样的一次性项目,虽然我猜生产项目通常会有这将明确在设定一个预定义的名字project
的命令。
当你提到你“复制一个项目的整个目录的另一个出发点”,我想你不包括构建树,当你复制? CMake的是不是真的能够处理移动构建树 。
我觉得CMAKE_CURRENT_LIST_DIR更适合这种情况下
get_filename_component(ProjectId ${CMAKE_CURRENT_LIST_DIR} NAME)
string(REPLACE " " "_" ProjectId ${ProjectId})
project(${ProjectId} C CXX)