我在使用CMake来管理我的构建系统方面相当新,所以如果我愚蠢,这是一个坏主意,请告诉我。在CMake中自动使用该目录作为项目名称
我希望能够建立我的CMakeLists.txt文件,这样当我做
project(...)
目录的名称将自动成为该项目的名称。我想这样做是因为我觉得能够复制一个项目的整个目录作为另一个项目的起点很方便。不过,尽管我总是将目录重命名为有意义的东西,但我经常忘记更改cmakelists.txt文件的project(name)
行,然后最终在我的构建环境中打开了多个项目,并且名称相同,这令人感到困惑。
理想情况下,如果目录名称中有空格,它们将被下划线替换。
CMake能做到这一点吗?由于某种原因,我没有看到这是一个坏主意吗?
,如果您有另一个目录中的目录overwise你得到一个错误,你应该使用$ {} CMAKE_CURRENT_LIST_DIR而不是$ {} CMAKE_SOURCE_DIR。 看看链接:http://stackoverflow.com/questions/15662497/in-cmake-what-is-the-difference-between-cmake-current-source-dir-and-cmake-curr – Maks
@Maks - A公平点,尽管['CMAKE_CURRENT_SOURCE_DIR'](https://cmake.org/cmake/help/v3.4/variable/CMAKE_CURRENT_SOURCE_DIR.html)比['CMAKE_CURRENT_LIST_DIR']更合适(https://cmake.org/ cmake/help/v3.4/variable/CMAKE_CURRENT_LIST_DIR.html),因为它指向包含正在为当前项目处理的CMakeLists.txt的目录,而'... LIST_DIR'将随'include'调用而改变。 – Fraser
当我在不同的工作树中签出2-3个不同的分支并希望在QtCreator中切换它们时(例如比较/对比源和执行),这对我很有用。然后它还允许我根据项目名称以编程方式将构建存放在不同的位置,尽管它们都应该具有相同的项目名称。在本地,我可能会将官方项目名称与我的目录名称连接起来... – sage