Federico Kircheis
2018-11-01 16:25:08 UTC
As described on https://github.com/Kitware/CMake/ I'm writing here to
check if the current behavior of cmake is really a bug.
I'm having following issues with toolchains files.
Here is my use case:
I have a `toolchain.gcc.cmake` and a `toolchain.clang.cmake` toolchain
files.
Those files define variables for the gcc and clang compiler, and some
settings (location of libraries, version numbers and so on) are common
to both, and I would like to have a common `toolchain.cmake` toolchain
file for that.
If I write (uncomment on of the includes)
-----
# toolchain.gcc.cmake
#include(common_settings.cmake)
#include(./common_settings.cmake)
#include(${CMAKE_CURRENT_SOURCE_DIR}/common_settings.cmake)
#include(${CMAKE_SOURCE_DIR}/common_settings.cmake)
#include(${CMAKE_HOME_DIRECTORY}/common_settings.cmake)
set(CMAKE_C_COMPILER gcc)
----
and execute (an empty CMakeLists.txt in the current directory is sufficient)
----
rm -rf build; mkdir build && (cd build && cmake
-DCMAKE_TOOLCHAIN_FILE=../toolchain.gcc.cmake ..);
----
then cmake complains:
----
include could not find load file:
/home/user/Workspace/toolchain/build/CMakeFiles/CMakeTmp/common_settings.cmake
Call Stack (most recent call first):
/home/user/Workspace/toolchain/build/CMakeFiles/3.12.3/CMakeSystem.cmake:6
(include)
/home/user/Workspace/toolchain/build/CMakeFiles/CMakeTmp/CMakeLists.txt:2
(project)
CMake Error at /usr/share/cmake-3.12/Modules/CMakeTestCCompiler.cmake:37
(try_compile):
Failed to configure test project build system.
Call Stack (most recent call first):
CMakeLists.txt:3 (project)
----
As far as I've understood, cmake runs some internal test where, for
example, `CMAKE_CURRENT_SOURCE_DIR` would not be the source directory of
my code, and therefore
`include(${CMAKE_CURRENT_SOURCE_DIR}/common_settings.cmake)` obviously
fails.
Same holds for other variables.
The problem is that there is no way to set a path relative to the
toolchain file, at least I was not able to find any.
The only possible fix is setting an absolute path, but this is not
really a solution since it makes the toolchain not portable.
Is there anything else I could try?
Is there already an open issue? I was not able to find any on
https://gitlab.kitware.com/cmake/cmake/issues/.
Thank you in advance
Federico
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake
check if the current behavior of cmake is really a bug.
I'm having following issues with toolchains files.
Here is my use case:
I have a `toolchain.gcc.cmake` and a `toolchain.clang.cmake` toolchain
files.
Those files define variables for the gcc and clang compiler, and some
settings (location of libraries, version numbers and so on) are common
to both, and I would like to have a common `toolchain.cmake` toolchain
file for that.
If I write (uncomment on of the includes)
-----
# toolchain.gcc.cmake
#include(common_settings.cmake)
#include(./common_settings.cmake)
#include(${CMAKE_CURRENT_SOURCE_DIR}/common_settings.cmake)
#include(${CMAKE_SOURCE_DIR}/common_settings.cmake)
#include(${CMAKE_HOME_DIRECTORY}/common_settings.cmake)
set(CMAKE_C_COMPILER gcc)
----
and execute (an empty CMakeLists.txt in the current directory is sufficient)
----
rm -rf build; mkdir build && (cd build && cmake
-DCMAKE_TOOLCHAIN_FILE=../toolchain.gcc.cmake ..);
----
then cmake complains:
----
include could not find load file:
/home/user/Workspace/toolchain/build/CMakeFiles/CMakeTmp/common_settings.cmake
Call Stack (most recent call first):
/home/user/Workspace/toolchain/build/CMakeFiles/3.12.3/CMakeSystem.cmake:6
(include)
/home/user/Workspace/toolchain/build/CMakeFiles/CMakeTmp/CMakeLists.txt:2
(project)
CMake Error at /usr/share/cmake-3.12/Modules/CMakeTestCCompiler.cmake:37
(try_compile):
Failed to configure test project build system.
Call Stack (most recent call first):
CMakeLists.txt:3 (project)
----
As far as I've understood, cmake runs some internal test where, for
example, `CMAKE_CURRENT_SOURCE_DIR` would not be the source directory of
my code, and therefore
`include(${CMAKE_CURRENT_SOURCE_DIR}/common_settings.cmake)` obviously
fails.
Same holds for other variables.
The problem is that there is no way to set a path relative to the
toolchain file, at least I was not able to find any.
The only possible fix is setting an absolute path, but this is not
really a solution since it makes the toolchain not portable.
Is there anything else I could try?
Is there already an open issue? I was not able to find any on
https://gitlab.kitware.com/cmake/cmake/issues/.
Thank you in advance
Federico
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake