我希望禁止人们在我们的源代码树中混杂生成的CMake文件...... 更重要的是,禁止他们踩踏那些不属于我们正在使用CMake构建过程的Makefiles
。(最好不要问为什么)
我想到的解决方法是,在我的CMakeLists.txt
文件顶部添加几行代码,如下所示:
if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
message(SEND_ERROR "In-source builds are not allowed.")
endif("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
然而,用这种方式做似乎太啰嗦了。此外,如果我尝试进行源码构建,它仍会在错误抛出之前在源树中创建 CMakeFiles/
目录和 CMakeCache.txt
文件。
我是否遗漏了更好的方法?
endif()
来关闭条件语句,我就不会认为它很冗长。 - Burakendif()
,那就太好了。我想当我写这个问题的时候,这是不可能的。 - mpontillo