我有这样的文件
.
??? CMakeLists.txt
??? src
??? CMakeLists.txt
??? main.c
Run Code Online (Sandbox Code Playgroud)
这是关于这个文件的内容
$ 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;
}
Run Code Online (Sandbox Code Playgroud)
然后我使用以下命令构建它
$ mkdir build
$ cd build
$ cmake ..
$ make
Run Code Online (Sandbox Code Playgroud)
这是结果目录结构

然后二进制文件hello将在目录中build/bin作为图片生成,但它应该在,build/binarydir因为我有set的值EXECUTABLE_OUTPUT_PATH,不是吗?我错过了什么?
您在设置之前创建可执行目标EXECUTABLE_OUTPUT_PATH。前移SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/binarydir)行ADD_SUBDIRECTORY(src bin)。