Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cmake_二进制_目录在子目录内更改_Cmake - Fatal编程技术网

cmake_二进制_目录在子目录内更改

cmake_二进制_目录在子目录内更改,cmake,Cmake,我的顶级CMakeLists.txt中有以下内容: set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/cmakebuild/bin) MESSAGE("Value is: \n${CMAKE_BINARY_DIR} ") add_subdirectory("sub/subA") 在子目录CMakeLists.txt中,我有这个 MESSAGE("SUBDIR Value is: \n${CMAKE_BINARY_DIR} ") 但是cmake的输出是 Valu

我的顶级CMakeLists.txt中有以下内容:

set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/cmakebuild/bin)
MESSAGE("Value is: \n${CMAKE_BINARY_DIR} ")
add_subdirectory("sub/subA")
在子目录CMakeLists.txt中,我有这个

MESSAGE("SUBDIR Value is: \n${CMAKE_BINARY_DIR} ")
但是
cmake
的输出是

Value is:
/home/me/myproj/cmakebuild/bin
SUBDIR Value is:
/home/me/myproj/cmakebuild

为什么结尾的/bin不在那里?

从不设置变量
CMAKE\u BINARY\u DIR
CMAKE\u CURRENT\u BINARY\u DIR
-CMAKE自动设置它们,并且不希望在外部更改它们


设置这些变量只会让CMake感到困惑,事情会变得非常奇怪。

我将尝试遵循这个建议。你能回答这个问题吗?顺便说一句,很多项目都设置了CMAKE_BINARY_DIR,我并不是编造出来的。关于为什么“永远不要设置它们”的任何参考或解释?这已经是一个答案-您尝试设置变量,并观察奇怪的行为。这就像某些编程语言中的“未定义行为”。关于“永远不要设置它们”的参考。。指定变量的值。你可以猜测其他值是不正确的。。。在任何地方,我都看到了其他问题,这些问题设置了这样的变量,并在构建简单的可执行文件时观察到了问题。
set(executable\u OUTPUT\u PATH“${CMAKE\u BINARY\u DIR}/bin”)
和使用executable\u OUTPUT\u PATH代替CMAKE\u BINARY\u DIR似乎效果更好