我是CMake的新手,阅读了一些有关如何使用它的教程,并编写了一些复杂的50行CMake脚本,以便为3个不同的编译器编写程序。这可能总结了我在CMake中的全部知识。
现在我的问题是我有一些源代码,制作程序时我不想碰到/碰到它们的文件夹。我希望所有CMake以及make
输出文件和文件夹都进入其中../Compile/
,因此我为此在CMake脚本中更改了一些变量,并且在我在笔记本电脑上执行以下操作时它起作用了:
Compile$ cmake ../src
Compile$ make
在那里,我现在在的文件夹中有干净的输出,这正是我想要的。
现在,我移至另一台计算机,并重新编译了CMake 2.8.11.2,然后我几乎回到了原来的水平!它总是将东西编译到src
my所在的文件夹中CMakeLists.txt
。
我在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
呢?