C++ 为什么可执行文件输出路径不工作?
我有这样的档案C++ 为什么可执行文件输出路径不工作?,c++,build,cmake,C++,Build,Cmake,我有这样的档案 . ├── CMakeLists.txt └── src ├── CMakeLists.txt └── main.c 这是关于这些文件的内容 $ cat CMakeLists.txt cmake_minimum_required(VERSION 3.5) PROJECT (HELLO) ADD_SUBDIRECTORY(src bin) SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/binarydir) $
.
├── CMakeLists.txt
└── src
├── CMakeLists.txt
└── main.c
这是关于这些文件的内容
$ cat CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
PROJECT (HELLO)
ADD_SUBDIRECTORY(src bin)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/binarydir)
$ cat src/CMakeLists.txt
ADD_EXECUTABLE(hello main.c)
$ cat src/main.c
#include <stdio.h>
int main()
{
printf("Hello World from t1 main().\n");
return 0;
}
这是结果目录结构
然后二进制文件
hello
将在目录build/bin
中生成,如图所示,但它应该在build/binarydir
中,因为我已经设置了可执行文件输出路径的值,不是吗?我错过了什么?在设置可执行输出路径之前,您正在创建可执行目标。将SET(EXECUTABLE\u OUTPUT\u PATH${PROJECT\u BINARY\u DIR}/binarydir)
行移动到ADD\u子目录(src bin)
变量之前是一种旧方法。新代码应该更喜欢。@Tsyvarev您的意思是SET(CMAKE\u RUNTIME\u OUTPUT\u DIRECTORY${PROJECT\u BINARY\u DIR}/binarydir)
对您有效?否,设置变量仍然必须在add\u subdirectory
调用之前进行。但是与其使用EXECUTABLE\u OUTPUT\u PATH
变量,不如将CMAKE\u RUNTIME\u OUTPUT\u目录设置为一个。
$ mkdir build
$ cd build
$ cmake ..
$ make