Fix using libloot through CMake's FetchContent

- Use PROJECT_SOURCE_DIR and PROJECT_BUILD_DIR instead of CMAKE_SOURCE_DIR and CMAKE_BUILD_DIR because libloot's CMakeLists.txt may not be the top-level one.
- Specify the working directory when calling cargo
- Define an alias and export the loot target so that it's usable without installing the built artifacts first
This commit is contained in:
Oliver Hamlet
2025-07-23 18:20:57 +01:00
parent 41193a2142
commit fdd84b11b8
2 changed files with 96 additions and 90 deletions
+20 -20
View File
@@ -34,37 +34,37 @@ set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_INITIAL})
##############################
set(LIBLOOT_SRC_TESTS_INTERFACE_CPP_FILES
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/main.cpp")
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/main.cpp")
set(LIBLOOT_SRC_TESTS_INTERFACE_H_FILES
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/api_game_operations_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/create_game_handle_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/database_interface_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/game_interface_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/is_compatible_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/metadata/file_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/metadata/group_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/metadata/location_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/metadata/message_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/metadata/message_content_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/metadata/plugin_cleaning_data_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/metadata/plugin_metadata_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/api/interface/metadata/tag_test.h")
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/api_game_operations_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/create_game_handle_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/database_interface_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/game_interface_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/is_compatible_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/metadata/file_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/metadata/group_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/metadata/location_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/metadata/message_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/metadata/message_content_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/metadata/plugin_cleaning_data_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/metadata/plugin_metadata_test.h"
"${PROJECT_SOURCE_DIR}/src/tests/api/interface/metadata/tag_test.h")
source_group(TREE "${CMAKE_SOURCE_DIR}/src/tests/api/interface"
source_group(TREE "${PROJECT_SOURCE_DIR}/src/tests/api/interface"
PREFIX "Source Files"
FILES ${LIBLOOT_SRC_TESTS_INTERFACE_CPP_FILES})
source_group(TREE "${CMAKE_SOURCE_DIR}/src/tests/api/interface"
source_group(TREE "${PROJECT_SOURCE_DIR}/src/tests/api/interface"
PREFIX "Header Files"
FILES ${LIBLOOT_SRC_TESTS_INTERFACE_H_FILES})
set(LIBLOOT_INTERFACE_TESTS_ALL_SOURCES
${LIBLOOT_SRC_TESTS_INTERFACE_CPP_FILES}
${LIBLOOT_SRC_TESTS_INTERFACE_H_FILES}
"${CMAKE_SOURCE_DIR}/src/tests/common_game_test_fixture.h"
"${CMAKE_SOURCE_DIR}/src/tests/test_helpers.h"
"${CMAKE_SOURCE_DIR}/src/tests/printers.h")
"${PROJECT_SOURCE_DIR}/src/tests/common_game_test_fixture.h"
"${PROJECT_SOURCE_DIR}/src/tests/test_helpers.h"
"${PROJECT_SOURCE_DIR}/src/tests/printers.h")
##############################
@@ -156,4 +156,4 @@ endif()
add_custom_command(TARGET libloot_tests POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${testing-plugins_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/testing-plugins)
${PROJECT_BINARY_DIR}/testing-plugins)