CMake toolchain includes multiple files

2019-05-18 04:44发布

For the reasons irrelevant to mention I would like to be able to include multiple files into toolchain file. Let's 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 get 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 does CMake print the information twice, it also claim it cannot find included files at third time after that.

Any ideas?

1条回答
Ridiculous、
2楼-- · 2019-05-18 05:07

Not only cmake prints the information twice

It's normal: during configuration, several steps are performed. On every step the toolchain file used.

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

Provide an absolute path.

查看更多
登录 后发表回答