【发布时间】:2018-01-06 22:43:02
【问题描述】:
我有以下文件夹结构:
- SomeApp
* CMakeLists.txt
* source.cpp
- cmake-build-debug
- protobuf
* CMakeLists.txt
* file.proto
在我的根 CMakeLists.txt 文件中写入:
cmake_minimum_required(VERSION 3.9)
project(SomeApp)
message("Root Dir: ${CMAKE_CURRENT_BINARY_DIR}")
ADD_SUBDIRECTORY(protobuf)
在我的 ./protobuf/ 中,CMakeLists.txt 是为了测试刚刚写的:
message("Protobuf Dir: ${CMAKE_CURRENT_BINARY_DIR}")
在编译过程中,我得到了输出:
Root Dir: /home/<...>/SomeApp/cmake-build-debug
Protobuf Dir: /home/<...>/SomeApp/cmake-build-debug
根据https://cmake.org/cmake/help/v3.0/variable/CMAKE_CURRENT_BINARY_DIR.html,实际输出应该是:
Root Dir: /home/<...>/SomeApp/
Protobuf Dir: /home/<...>/SomeApp/protobuf/
我的 cmake 设置出了什么问题?
【问题讨论】:
-
你确定输出不是 Protobuf Dir: /home/<...>/SomeApp/cmake-build-debug/protobuf?如果没有尾随的 protobuf,我会感到困惑。
-
cmake-build-debug 是你的构建目录。一切都放在那里,当前的二进制目录总是在构建目录之下。我不确定你是否得到这个或者是否是你问题的一部分(搜索外源构建以获取更多信息)
-
我已经给你的例子一个尝试并得到 - 正如预期的那样 -
Root Dir: .../SomeApp/cmake-build-debug和Protobuf Dir: .../SomeApp/cmake-build-debug/protobuf。因此,对于给定的示例,您的问题无法重现,并且肯定缺少关键的东西。
标签: compilation cmake