diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 139 |
1 files changed, 48 insertions, 91 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index f0a95f0..6d1ec20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,56 +1,23 @@ -cmake_minimum_required(VERSION 3.10) -project("wanda" LANGUAGES CXX) +cmake_minimum_required(VERSION 3.24) -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) -set(CMAKE_CXX_EXTENSIONS OFF) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_STANDARD "20") - -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Release") -endif() - -if(NOT CMAKE_EXPORT_COMPILE_COMMANDS) - set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -endif() - -list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules") - -if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") -endif() - -if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") -endif() - -if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") -endif() - -enable_testing() - -# Conan Dependencies - -include("Conan") - -conan_add_remote(NAME "fmorgner" - URL "https://api.bintray.com/conan/fmorgner/conan-public" +project("wanda" + LANGUAGES CXX + VERSION "1.0.0" ) -conan_cmake_run(CONANFILE "conanfile.py" - BASIC_SETUP - CMAKE_TARGETS - BUILD "missing" - OUTPUT_QUIET -) - -# System Dependencies set(CMAKE_THREAD_PREFER_PTHREAD ON) set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package("asio") +find_package("Boost") +find_package("JPEG") +find_package("PNG") +find_package("lyra") +find_package("spdlog") find_package("Threads") + find_package("PkgConfig" REQUIRED) + pkg_check_modules("GIO" REQUIRED IMPORTED_TARGET @@ -65,14 +32,6 @@ pkg_check_modules("libmagic" "libmagic" ) -find_library(C++FS_LIBRARIES - "stdc++fs" - DOC "The C++ Standard Library Filesystem implementation" -) -if(NOT C++FS_LIBRARIES) - message(FATAL_ERROR "Failed to find libstdc++fs") -endif() - # Core Library add_library("${PROJECT_NAME}" STATIC @@ -95,16 +54,26 @@ add_library("${PROJECT_NAME}" STATIC "${PROJECT_SOURCE_DIR}/include/wanda/type_wrapper.hpp" "${PROJECT_SOURCE_DIR}/include/wanda/xdg.hpp" ) -target_link_libraries("${PROJECT_NAME}" - "${C++FS_LIBRARIES}" - "CONAN_PKG::asio" - "CONAN_PKG::spdlog" + +target_compile_features("${PROJECT_NAME}" PUBLIC + "cxx_std_20" +) + +target_link_libraries("${PROJECT_NAME}" PUBLIC + "asio::asio" + "spdlog::spdlog" "Threads::Threads" ) + target_include_directories("${PROJECT_NAME}" SYSTEM PUBLIC "${PROJECT_SOURCE_DIR}/include" ) +set_target_properties("${PROJECT_NAME}" PROPERTIES + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS OFF +) + # Core Executables add_executable("${PROJECT_NAME}d" @@ -119,14 +88,20 @@ add_executable("${PROJECT_NAME}d" "${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/setting.hpp" "${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/wallpaper.hpp" ) -target_link_libraries("${PROJECT_NAME}d" + +target_link_libraries("${PROJECT_NAME}d" PRIVATE "${PROJECT_NAME}" - "CONAN_PKG::lyra" - "CONAN_PKG::boost" - "CONAN_PKG::libjpeg" - "CONAN_PKG::libpng" + "bfg::lyra" + "boost::boost" + "JPEG::JPEG" "PkgConfig::GIO" "PkgConfig::libmagic" + "PNG::PNG" +) + +set_target_properties("${PROJECT_NAME}d" PROPERTIES + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS OFF ) add_executable("${PROJECT_NAME}c" @@ -135,39 +110,21 @@ add_executable("${PROJECT_NAME}c" "${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/commander.hpp" ) -target_link_libraries("${PROJECT_NAME}c" + +target_link_libraries("${PROJECT_NAME}c" PRIVATE "${PROJECT_NAME}" - "CONAN_PKG::lyra" + "bfg::lyra" ) -# Automated Tests - -add_library("${PROJECT_NAME}_test_driver" OBJECT - "tests/${PROJECT_NAME}/driver.cpp" -) -target_link_libraries("${PROJECT_NAME}_test_driver" - "CONAN_PKG::CUTE" +set_target_properties("${PROJECT_NAME}c" PROPERTIES + CXX_STANDARD_REQUIRED YES + CXX_EXTENSIONS OFF ) -function("cute_test" SUITE_NAME) - if(NOT SUITE_NAME) - message(FATAL_ERROR "Missing argument 'SUITE_NAME'!") - endif() - - add_executable("${PROJECT_NAME}_${SUITE_NAME}_tests" - "tests/${PROJECT_NAME}/test_suite_${SUITE_NAME}.cpp" - ) - target_link_libraries("${PROJECT_NAME}_${SUITE_NAME}_tests" - "${PROJECT_NAME}_test_driver" - "${PROJECT_NAME}" - ) - add_test(NAME "${SUITE_NAME}_tests" - COMMAND "${PROJECT_NAME}_${SUITE_NAME}_tests" - ) -endfunction() - -cute_test("xdg") - # Install Targets -install(TARGETS "${PROJECT_NAME}" "${PROJECT_NAME}c" "${PROJECT_NAME}d") +install(TARGETS + "${PROJECT_NAME}" + "${PROJECT_NAME}c" + "${PROJECT_NAME}d" +) |
