cmake的CMAKE_TOOLCHAIN_FILE被忽略

时间:2014-01-27 17:42:30

标签: c++ linux cmake cross-compiling

由于某种原因,cmake忽略了我的工具链文件:

lynxos.cmake:

set(CMAKE_SYSTEM_NAME LynxOS)
set(CMAKE_CROSSCOMPILING TRUE)
set(CMAKE_CXX_COMPILER /usr/los178/2.3.0/x86_dev/cdk/linux-coff-x86/usr/bin/g++)
set(CMAKE_C_COMPILER /usr/los178/2.3.0/x86_dev/cdk/linux-coff-x86/bin/gcc)
set(CMAKE_FIND_ROOT_PATH /usr/los178/2.3.0/x86_dev/cdk/linux-coff-x86/)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)

对cmake的调用:

cmake -DCMAKE_TOOLCHAIN_FILE=lynxos.cmake -DUSE_TINY_XML=TRUE

CMAKE_CXX_COMPILER仍默认为我的默认编译器。从命令行使用-D设置CMAKE_CXX_COMPILER可以正常工作,但是cmake会发出警告:

You have changed variables that require your cache to be deleted.
Configure will be re-run and you may have to reset some variables.
The following variables have changed:
CMAKE_C_COMPILER= <path to compiler>
CMAKE_CXX_COMPILER= <path to compiler>

然后我的其他cmake变量变得未定义。

尝试删除CMakeCache.txt文件。不工作。使用CMake 2.8.11。知道什么是错的吗?

2 个答案:

答案 0 :(得分:3)

CMake创建了多个缓存文件,我首先尝试从完全不同的目录中进行。

答案 1 :(得分:1)

每当您运行cmake时,请始终使用干净目录。如果您ls -a,您会看到很多缓存文件。如果您尝试再次运行cmake,则可能会使用很多这些缓存的文件。我最近也遇到了这个问题。只需cd ..; rm -rf build/**;cd build即可清理目录并再次运行cmake

相关问题