EXECUTABLE_OUTPUT_PATH不起作用

时间:2018-02-25 10:49:16

标签: 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)

$ 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;
}

然后我用以下命令构建它

$ mkdir build
$ cd build
$ cmake ..
$ make

这是结果目录结构

然后二进制文件hello将在目录build/bin中生成,但它应该在build/binarydir中,因为我set的值为EXECUTABLE_OUTPUT_PATH ,不是吗?我错过了什么?

1 个答案:

答案 0 :(得分:2)

在设置EXECUTABLE_OUTPUT_PATH之前,您正在创建可执行目标。在SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/binarydir)之前移动ADD_SUBDIRECTORY(src bin)行。