cmake_二进制_目录在子目录内更改
我的顶级CMakeLists.txt中有以下内容: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
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似乎效果更好