CMake 工具链包含多个文件

Posted

技术标签:

【中文标题】CMake 工具链包含多个文件【英文标题】:CMake toolchain includes multiple files 【发布时间】:2013-11-20 04:48:54 【问题描述】:

出于不相关的原因,我希望能够将多个文件包含到工具链文件中。假设我的工具链包含以下内容:

消息(状态“文件 1 正常”) 包括(./build/file2)

file2 包含标识行:

消息(状态“文件 2 正常”)

CMakeLists.txt 包含:

cmake_minimum_required (版本 2.8.8) 项目(专业) message(STATUS "cmakelists.txt is ok")

我使用以下命令调用它:

cmake -DCMAKE_TOOLCHAIN_FILE=../../build/file1 ../../

现在,我希望得到以下输出:

--file1 没问题 --file2 没问题 -- cmakelists.txt 没问题

但我明白了:

--file1 没问题 --file2 没问题 --file1 没问题 --file2 没问题 -- C 编译器标识为 Clang 5.0.0 -- CXX 编译器标识为 Clang 5.0.0 -- 检查工作的 C 编译器:/usr/bin/cc /fullpath/build/file1:2 处的 CMake 错误(包括): 包括找不到加载文件: ./build/file2 调用堆栈(最近的调用优先): /fullpath/build/Mac/CMakeFiles/2.8.12/CMakeSystem.cmake:6(包括) CMakeLists.txt:2(项目) CMake 错误:内部 CMake 错误,cmake 的 TryCompile 配置失败 -- 检查工作的 C 编译器:/usr/bin/cc -- 损坏 /Applications/CMake 2.8-12.app/Contents/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:61 处的 CMake 错误(消息): C 编译器“/usr/bin/cc”不能编译简单的测试程序。 它失败并显示以下输出: CMake 将无法正确生成此项目。 调用堆栈(最近的调用优先): CMakeLists.txt:2(项目) -- 配置不完整,出现错误!

CMake 不仅两次打印信息,还声称在此之后第三次找不到包含的文件。

有什么想法吗?

【问题讨论】:

比这更糟糕。尝试将状态更改为详细。对我来说 toolchain.cmake 运行了 12 次,我的问题是只设置了前 2 次 -DVAR=VAL 变量。以下 10 次未设置。然而更糟糕的是,如果我真的尝试设置工具链路径,我会得到一个无限循环。有人可以解释发生了什么吗? 【参考方案1】:

不仅cmake两次打印信息

正常:在配置过程中,会执行几个步骤。每一步都使用了工具链文件。

它还声称在此之后第三次找不到包含的文件。有什么想法吗?

提供绝对路径。

【讨论】:

我只是这样做并发现,cmake 第三次使用“fullpath/build/target/CMakeFiles/CMakeTmp/”目录,而不是预期的“fullpath”。当然它找不到文件..

以上是关于CMake 工具链包含多个文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Cygwin 或 MinGW 中使用 CMake 和 AVR 工具链

尝试在 Ubuntu 上配置 CMake 工具链

cmake中QT的错误工具链

带有 cmake 工具链文件的 Yocto SDK

cmake:ESP32交叉编译工具链定义

cmake:arm-xm-linux交叉编译工具链文件及交叉支持HTTPS的curl静态库