我有一个这样的项目
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}
初始值的变量。
答案 0 :(得分:0)
我在这里找到了答案:https://gitlab.kitware.com/cmake/cmake/issues/16744
CMAKE_CURRENT_LIST_DIR
在这种情况下确实可以工作。