【问题标题】:cmake's CMAKE_TOOLCHAIN_FILE being ignoredcmake 的 CMAKE_TOOLCHAIN_FILE 被忽略
【发布时间】:2014-02-18 16:52:11
【问题描述】:

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。知道有什么问题吗?

【问题讨论】:

  • CMake 创建了超过 1 个缓存文件,我会先尝试从一个完全不同的目录进行操作。
  • 是的,清除所有 cmake 生成的文件有效。谢谢

标签: c++ linux cmake cross-compiling


【解决方案1】:

CMake 会创建超过 1 个缓存文件,我会先尝试从完全不同的目录执行此操作。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 2016-03-16
      • 1970-01-01
      相关资源
      最近更新 更多