CMake:如何从工具链文件中获取项目目录?

时间:2019-01-16 22:13:05

标签: cmake

我有一个这样的项目

project:
-- CMakeLists.txt
-- toolchain.cmake
-- source
-- includes
-- tools
   -- arm-toolchain
      -- arm-gnueabihf-gcc
      -- ...
-- libraries
   -- lib1
      -- ...
      -- CMakeLists.txt
   -- lib2
      -- ...
      -- CMakeLists.txt

我想像这样在toolchain.cmake内为另一种体系结构设置编译器:

...
set (CMAKE_C_COMPILER "${CMAKE_SOURCE_DIR}/tools/arm-toolchain/arm-gnueabihf-gcc")
...

不幸的是,变量${CMAKE_SOURCE_DIR}在编译项目时确实发生了变化,起初它是:

CMAKE_SOURCE_DIR=/home/username/project

这正是我所期望的。不幸的是,它更改为

CMAKE_SOURCE_DIR=/home/username/project/build/CMakeFiles/CMakeTmp

因此,我不能使用${CMAKE_SOURCE_DIR}作为project文件夹的根,是否还有另一个不变的变量?或者,我可以以某种方式存储第一个值吗?问题在于该工具链被多次调用,因此在第二次运行时将覆盖我存储${CMAKE_SOURCE_DIR}初始值的变量。

1 个答案:

答案 0 :(得分:0)

我在这里找到了答案:https://gitlab.kitware.com/cmake/cmake/issues/16744

CMAKE_CURRENT_LIST_DIR在这种情况下确实可以工作。