且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

cmake工具链包含多个文件

更新时间:2023-09-18 09:08:04


不仅cmake才会打印两次信息


这是正常的。在配置期间执行几个步骤。对每个步骤使用的工具链文件。


它也声称在第三次之后找不到包含的文件。任何想法?


使用绝对路径。


For the reasons irrelevant to mention I would like to be able to include multiple files into toolchain file. Lets say my toolchain contains following:

message(STATUS "file1 is ok")
include(./build/file2)

the file2 contains identification line:

message(STATUS "file2 is ok")

the CMakeLists.txt contains:

cmake_minimum_required (VERSION 2.8.8)
project (pro)
message(STATUS "cmakelists.txt is ok")

I call it using following command:

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

Now, I would expect the following output:

-- file1 is ok
-- file2 is ok
-- cmakelists.txt is ok

Yet i become this:

-- file1 is ok
-- file2 is ok
-- file1 is ok
-- file2 is ok
-- The C compiler identification is Clang 5.0.0
-- The CXX compiler identification is Clang 5.0.0
-- Check for working C compiler: /usr/bin/cc
CMake Error at /fullpath/build/file1:2 (include):
  include could not find load file:
    ./build/file2
Call Stack (most recent call first):
  /fullpath/build/Mac/CMakeFiles/2.8.12/CMakeSystem.cmake:6 (include)
  CMakeLists.txt:2 (PROJECT)
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working C compiler: /usr/bin/cc -- broken
CMake Error at /Applications/CMake 2.8-12.app/Contents/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:61 (message):
  The C compiler "/usr/bin/cc" is not able to compile a simple test program.
  It fails with the following output:
  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:2 (project)
-- Configuring incomplete, errors occurred!

Not only cmake prints the information twice, it also claim it cannot find included files at third time after that.

Any ideas?

Not only cmake prints the information twice

It's normal. During configuration several steps performed. On every step toolchain file used.

it also claim it cannot find included files at third time after that. Any ideas?

Use absolute path.