daixtrose / cmake_utilities

CMake utilities addressing configuration management and dependency hell mitigation
MIT License
7 stars 1 forks source link

Demo example `tool_1` fails to configure on second run #22

Open daixtrose opened 2 months ago

daixtrose commented 2 months ago

Environment

Steps to reproduce

git clone https://github.com/dep-heaven/tool_1
cd tool_1
mkdir build
cd build/
cmake ..

The last call populates the dependencies to ws

rm -rf *
cmake ..

CMake fails with

...
==> Toplevel: lib_A_SOURCE_DIR = ''
Catch path is '/extras'
CMake Error at test-catch/CMakeLists.txt:7 (include):
  include could not find requested file:

    Catch

-- DEFINE_UNIT_TEST_NAME = test_tool_1
-- DEFINE_UNIT_TEST_FILES = ../src/fn.cpp;test_main.cpp;test_tool_1.cpp
CMake Error at test-catch/CMakeLists.txt:51 (catch_discover_tests):
  Unknown CMake command "catch_discover_tests".

-- Configuring incomplete, errors occurred!

Full sequence of a failure

user@jost:~/PROJECT/tool_1/build$ cmake ..
-- Resolving dependencies of project /home/markus/PROJECT/tool_1
-- Checking dependency 'lib_A': https://github.com/dep-heaven/lib_A @ master-yoda
-- Initializing in '/home/markus/PROJECT/tool_1/ws/lib_A'
-- Checking dependency 'lib_B': https://github.com/dep-heaven/lib_B @ master-yoda
-- Initializing in '/home/markus/PROJECT/tool_1/ws/lib_B'
-- Checking dependency 'libFreeAssange': https://github.com/dep-heaven/libFreeAssange @ belmarsh
-- Initializing in '/home/markus/PROJECT/tool_1/ws/libFreeAssange'
-- Checking dependency 'catch2': https://github.com/catchorg/Catch2 @ v2.x
-- Initializing in '/home/markus/PROJECT/tool_1/ws/catch2'
-- Checking dependency 'fmt': https://github.com/fmtlib/fmt @ master
-- Initializing in '/home/markus/PROJECT/tool_1/ws/fmt'
-- Resolving dependencies of project /home/markus/PROJECT/tool_1/ws/lib_A
-- Checking dependency 'catch2': https://github.com/catchorg/Catch2 @ v2.x
-- Checking dependency 'fmt': https://github.com/fmtlib/fmt @ master
-- {fmt} version: 10.2.2
-- Build type: 
-- Resolving dependencies of project /home/markus/PROJECT/tool_1/ws/lib_B
-- Checking dependency 'libFreeAssange': https://github.com/dep-heaven/libFreeAssange @ wikileaks
-- Dependency 'libFreeAssange @ wikileaks' is overridden with 'libFreeAssange @ belmarsh'
-- Checking dependency 'catch2': https://github.com/catchorg/Catch2 @ v2.x
-- Checking dependency 'fmt': https://github.com/fmtlib/fmt @ master
-- Resolving dependencies of project /home/markus/PROJECT/tool_1/ws/libFreeAssange
-- Checking dependency 'catch2': https://github.com/catchorg/Catch2 @ v2.x
-- Checking dependency 'fmt': https://github.com/fmtlib/fmt @ master
WARNING! Something is still wrong here!
   RepoMan should populate selected name, not original name
==> Toplevel: catch2_SOURCE_DIR = '/home/markus/PROJECT/tool_1/ws/catch2'
==> Toplevel: Catch2_SOURCE_DIR = '/home/markus/PROJECT/tool_1/ws/catch2'
==> Toplevel: lib_a_SOURCE_DIR = '/home/markus/PROJECT/tool_1/ws/lib_A'
==> Toplevel: lib_A_SOURCE_DIR = '/home/markus/PROJECT/tool_1/ws/lib_A'
Catch path is '/home/markus/PROJECT/tool_1/ws/catch2/extras'
-- DEFINE_UNIT_TEST_NAME = test_tool_1
-- DEFINE_UNIT_TEST_FILES = ../src/fn.cpp;test_main.cpp;test_tool_1.cpp
-- Dependencies:
--     lib_A @ master-yoda
--     lib_B @ master-yoda
--     libFreeAssange @ belmarsh, chosen from [belmarsh, wikileaks]
--     catch2 @ v2.x, chosen from [v2.x, v2.x, v2.x, v2.x]
--     fmt @ master, chosen from [master, master, master, master]
-- Configuring done (16.7s)
-- Generating done (0.0s)
-- Build files have been written to: /home/markus/PROJECT/tool_1/build
user@jost:~/PROJECT/tool_1/build$ rm -rf *
user@jost:~/PROJECT/tool_1/build$ cmake ..
-- The CXX compiler identification is GNU 11.4.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Resolving dependencies of project /home/markus/PROJECT/tool_1
-- Checking dependency 'lib_A': https://github.com/dep-heaven/lib_A @ master-yoda
-- Dependency 'lib_A': ok (master-yoda)
-- Checking dependency 'lib_B': https://github.com/dep-heaven/lib_B @ master-yoda
-- Dependency 'lib_B': ok (master-yoda)
-- Checking dependency 'libFreeAssange': https://github.com/dep-heaven/libFreeAssange @ belmarsh
-- Dependency 'libFreeAssange': ok (belmarsh)
-- Checking dependency 'catch2': https://github.com/catchorg/Catch2 @ v2.x
-- Dependency 'catch2': ok (v2.x)
-- Checking dependency 'fmt': https://github.com/fmtlib/fmt @ master
-- Dependency 'fmt': ok (master)
WARNING! Something is still wrong here!
   RepoMan should populate selected name, not original name
==> Toplevel: catch2_SOURCE_DIR = '/home/markus/PROJECT/tool_1/ws/catch2'
==> Toplevel: Catch2_SOURCE_DIR = ''
==> Toplevel: lib_a_SOURCE_DIR = '/home/markus/PROJECT/tool_1/ws/lib_A'
==> Toplevel: lib_A_SOURCE_DIR = ''
Catch path is '/extras'
CMake Error at test-catch/CMakeLists.txt:7 (include):
  include could not find requested file:

    Catch

-- DEFINE_UNIT_TEST_NAME = test_tool_1
-- DEFINE_UNIT_TEST_FILES = ../src/fn.cpp;test_main.cpp;test_tool_1.cpp
CMake Error at test-catch/CMakeLists.txt:51 (catch_discover_tests):
  Unknown CMake command "catch_discover_tests".

-- Configuring incomplete, errors occurred!
cpp-entwickler-de commented 2 months ago

Please test MR #23 (untested)