From e33628392703bb4af24efe5d7957b91034a73d3f Mon Sep 17 00:00:00 2001 From: przemek83 <4788832+przemek83@users.noreply.github.com> Date: Fri, 6 Sep 2024 09:38:41 +0200 Subject: [PATCH] Use FetchContent to load Allegro lib. --- CMakeLists.txt | 39 ++++++++++++++++++++------------------- CMakeLists.txt.allegro | 18 +++++++----------- test/CMakeLists.txt | 7 +------ 3 files changed, 28 insertions(+), 36 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ee2dd10..bb58243 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,22 +10,20 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -set(THIRD_PARTY_LIBS allegro) -foreach(file_i ${THIRD_PARTY_LIBS}) - configure_file(CMakeLists.txt.${file_i} ${file_i}/CMakeLists.txt) - execute_process(COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} . - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${file_i}) - execute_process(COMMAND ${CMAKE_COMMAND} --build . - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${file_i} ) +option(CODE_COVERAGE "Collect coverage" OFF) - include_directories(${CMAKE_BINARY_DIR}/${file_i}/install/include) - link_directories(${CMAKE_BINARY_DIR}/${file_i}/install/lib) -endforeach(file_i) +if(CODE_COVERAGE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 --coverage") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 --coverage") +endif() -file(GLOB_RECURSE DLLS "${CMAKE_BINARY_DIR}/*.dll" ) -file(COPY ${DLLS} DESTINATION ${CMAKE_BINARY_DIR}) -file(COPY ${DLLS} DESTINATION "${CMAKE_BINARY_DIR}/test") +include(CMakeLists.txt.allegro) +set(ALLEGRO_SOURCE_DIR "${FETCHCONTENT_BASE_DIR}/allegro-src") +set(ALLEGRO_BINARY_DIR "${FETCHCONTENT_BASE_DIR}/allegro-build") +# file(GLOB_RECURSE DLLS "${CMAKE_BINARY_DIR}/*.dll" ) +# file(COPY ${DLLS} DESTINATION ${CMAKE_BINARY_DIR}) +# file(COPY ${DLLS} DESTINATION "${CMAKE_BINARY_DIR}/test") file(COPY image DESTINATION ${CMAKE_BINARY_DIR}) file(COPY levels DESTINATION ${CMAKE_BINARY_DIR}) @@ -92,14 +90,17 @@ set(${PROJECT_NAME}_SOURCES ) add_library (${PROJECT_NAME}-lib STATIC ${${PROJECT_NAME}_SOURCES}) +target_link_libraries(${PROJECT_NAME}-lib allegro allegro_image allegro_font allegro_primitives) +target_include_directories(${PROJECT_NAME}-lib PUBLIC +${ALLEGRO_SOURCE_DIR}/include +${ALLEGRO_SOURCE_DIR}/addons/font +${ALLEGRO_SOURCE_DIR}/addons/image +${ALLEGRO_SOURCE_DIR}/addons/primitives +${ALLEGRO_BINARY_DIR}/include +) add_executable(${CMAKE_PROJECT_NAME} src/main.cpp) -target_link_libraries(${PROJECT_NAME} stdc++fs ${PROJECT_NAME}-lib - optimized allegro debug allegro-debug - optimized allegro_image debug allegro_image-debug - optimized allegro_font debug allegro_font-debug - optimized allegro_primitives debug allegro_primitives-debug -) +target_link_libraries(${PROJECT_NAME} stdc++fs ${PROJECT_NAME}-lib) enable_testing() Include(Tests.cmake) diff --git a/CMakeLists.txt.allegro b/CMakeLists.txt.allegro index 3abd198..d967b86 100644 --- a/CMakeLists.txt.allegro +++ b/CMakeLists.txt.allegro @@ -1,13 +1,9 @@ -cmake_minimum_required(VERSION 3.8) +Include(FetchContent) -include(ExternalProject) - -project(allegro NONE) - -ExternalProject_Add(allegro - PREFIX allegro - GIT_REPOSITORY https://github.com/liballeg/allegro5.git - GIT_TAG 5.2.6.0 - CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/allegro/install +FetchContent_Declare( + allegro + GIT_REPOSITORY https://github.com/liballeg/allegro5.git + GIT_TAG 5.2.9.1 ) + +FetchContent_MakeAvailable(allegro) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 60d75ba..ec823f5 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -11,12 +11,7 @@ set(${PROJECT_TEST}_SOURCES ) add_executable(${PROJECT_TEST} ${${PROJECT_TEST}_SOURCES}) -target_link_libraries(${PROJECT_TEST} PRIVATE Catch2::Catch2WithMain - ${PROJECT_NAME}-lib optimized allegro debug allegro-debug - optimized allegro_image debug allegro_image-debug - optimized allegro_font debug allegro_font-debug - optimized allegro_primitives debug allegro_primitives-debug -) +target_link_libraries(${PROJECT_TEST} PRIVATE Catch2::Catch2WithMain ${PROJECT_NAME}-lib) include(CTest) include(Catch)