我对CMake还比较新,已经阅读了一些关于如何使用它的教程,并编写了一些复杂的50行CMake脚本,以便为3个不同的编译器制作程序。这可能是我在CMake方面的全部知识。
现在我的问题是,我有一些源代码,我不想在制作程序时触及/混乱它的文件夹。我希望所有CMake和make
输出文件和文件夹都进入../Compile/
,因此我更改了我的CMake脚本中的一些变量,并且当我在笔记本电脑上执行以下操作时,它起作用了:
Compile$ cmake ../src
Compile$ make
我希望我的输出可以干净地放在当前文件夹中,这正是我所需的。
现在我换到了另一台电脑上重新编译了CMake 2.8.11.2,但我几乎回到了起点!它总是将东西编译到我的 CMakeLists.txt
所在目录下的 src
文件夹中。
我在 CMake 脚本中选择目录的部分如下:
set(dir ${CMAKE_CURRENT_SOURCE_DIR}/../Compile/)
set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dir})
set(CMAKE_BUILD_FILES_DIRECTORY ${dir})
set(CMAKE_BUILD_DIRECTORY ${dir})
set(CMAKE_BINARY_DIR ${dir})
SET(EXECUTABLE_OUTPUT_PATH ${dir})
SET(LIBRARY_OUTPUT_PATH ${dir}lib)
SET(CMAKE_CACHEFILE_DIR ${dir})
现在它总是以这个结束:
-- Build files have been written to: /.../src
我有遗漏吗?
CMAKE_BINARY_DIR
或CMAKE_CACHEFILE_DIR
。如果你删除所有这些set()
调用,只执行cd Compile; rm -rf *; cmake ../src
命令,会发生什么? - Angew is no longer proud of SO