-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CMake: Misleading error message in C only projects trying to find Boost #76
Comments
LeSpocky
referenced
this issue
in LeSpocky/boost_install
Sep 9, 2024
CMake bails out with an error message giving no clue what's going on, if variable CMAKE_CXX_COMPILER_VERSION is not set: CMake Error at /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.74.0.cmake:9 (string): string sub-command REGEX, mode MATCHALL needs at least 5 arguments total to command. Call Stack (most recent call first): /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.74.0/boost_thread-config.cmake:27 (include) /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:141 (find_package) /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:258 (boost_find_component) CMakeLists.txt:7 (find_package) -- Boost toolset is unknown (compiler ) The added message still leads to a CMake error, but gives the user a better clue where to look for in her own project trying to find Boost. Fixes: #74
LeSpocky
referenced
this issue
in LeSpocky/boost_install
Sep 9, 2024
CMake bails out with an error message giving no clue what's going on, if variable CMAKE_CXX_COMPILER_VERSION is not set: CMake Error at /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.74.0.cmake:9 (string): string sub-command REGEX, mode MATCHALL needs at least 5 arguments total to command. Call Stack (most recent call first): /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.74.0/boost_thread-config.cmake:27 (include) /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:141 (find_package) /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:258 (boost_find_component) CMakeLists.txt:7 (find_package) -- Boost toolset is unknown (compiler ) The added message still leads to a CMake error, but gives the user a better clue where to look for in her own project trying to find Boost. Output afterwards: CMake Error at /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.74.0.cmake:6 (message): CMAKE_CXX_COMPILER_VERSION is not set! Call Stack (most recent call first): /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.74.0/boost_thread-config.cmake:27 (include) /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:141 (find_package) /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:258 (boost_find_component) CMakeLists.txt:7 (find_package) CMake Error at /usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.74.0.cmake:8 (string): string sub-command REGEX, mode MATCHALL needs at least 5 arguments total to command. Call Stack (most recent call first): /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.74.0/boost_thread-config.cmake:27 (include) /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:141 (find_package) /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:258 (boost_find_component) CMakeLists.txt:7 (find_package) -- Boost toolset is unknown (compiler ) Fixes: #74
pdimov
referenced
this issue
Sep 9, 2024
Something like this: d85e1b5? |
Please don't move my issues around, @mclow ; it was in the right place. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I have multiple CMake library projects here, one of them using Boost threads. One library project ("A") exports its own config together with a
find_dependency(Boost COMPONENTS thread)
call.Another library project ("B") uses
find_package(A)
and this way the find_dependency is executed which callsfind_package(Boost COMPONENTS thread)
internally. That is then used by a third library ("C"), so you a have a chain of dependencies here.Problem: library C currently has its LANGUAGES set to
C
in theproject()
call. Linking libB in libC is possible, but since the switch from CMake FindBoost module to cmake package config coming with Boost I get a build error, which I could track down to Boost.Minimal example requires a short CMakeLists.txt only:
The error message is like this:
Note: this still happens with most recent Boost, it was just easier to reproduce on my host machine like this.
Note: this only happens if COMPONENTS are involved.
Analysis: the problem is in tools/boost_install/BoostDetectToolset.cmake right in the first line:
In my case
${CMAKE_CXX_COMPILER_VERSION}
is empty here (C only project), leading to that error message. I would propose to check for that variable before using it and bailout with a meaningful error message if it is found to be empty.The text was updated successfully, but these errors were encountered: