From 65669bbe58e21da10418055a7e1f91951113e0b6 Mon Sep 17 00:00:00 2001 From: memsharded Date: Mon, 9 Dec 2024 19:29:29 +0100 Subject: [PATCH 1/2] new test for new CMakeDeps shared linking --- .../cmake/cmakedeps/test_cmakedeps_new.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new.py b/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new.py index 044865fe34b..473fe66df04 100644 --- a/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new.py +++ b/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new.py @@ -230,6 +230,26 @@ def test_multilevel_shared(self): c.save({}, clean_first=True) c.run("new cmake_lib -d name=gamelib -d version=0.1 -d requires=engine/0.1") + cmake = textwrap.dedent("""\ + cmake_minimum_required(VERSION 3.15) + project(gamelib CXX) + + find_package(engine CONFIG REQUIRED) + + add_library(gamelib src/gamelib.cpp) + target_include_directories(gamelib PUBLIC include) + target_link_libraries(gamelib PRIVATE engine::engine) + + add_executable(gamelib_test src/gamelib_test.cpp) + target_link_libraries(gamelib_test PRIVATE gamelib) + + set_target_properties(gamelib PROPERTIES PUBLIC_HEADER "include/gamelib.h") + install(TARGETS gamelib) + """) + # Testing that a local test executable links correctly with the new CMakeDeps + # It fails with the old CMakeDeps + c.save({"CMakeLists.txt": cmake, + "src/gamelib_test.cpp": '#include "gamelib.h"\nint main() { gamelib(); }'}) c.run(f"create . -o *:shared=True -c tools.cmake.cmakedeps:new={new_value}") c.save({}, clean_first=True) From b6d10100198cf6c96678d02a3e1420bc0809b35c Mon Sep 17 00:00:00 2001 From: memsharded Date: Mon, 9 Dec 2024 19:55:21 +0100 Subject: [PATCH 2/2] run with cmake 3.23 --- .../functional/toolchains/cmake/cmakedeps/test_cmakedeps_new.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new.py b/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new.py index 473fe66df04..95a8a32ef26 100644 --- a/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new.py +++ b/test/functional/toolchains/cmake/cmakedeps/test_cmakedeps_new.py @@ -218,6 +218,8 @@ def test_libs_transitive(self, transitive_libraries, shared): assert "Conan: Target declared imported STATIC library 'matrix::matrix'" in c.out assert "Conan: Target declared imported STATIC library 'engine::engine'" in c.out + # if not using cmake >= 3.23 the intermediate gamelib_test linkage fail + @pytest.mark.tool("cmake", "3.23") def test_multilevel_shared(self): # TODO: make this shared fixtures in conftest for multi-level shared testing c = TestClient(default_server_user=True)