diff --git a/CMakeLists.txt b/CMakeLists.txt index 85731fe..77aee64 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,32 @@ cmake_minimum_required(VERSION 3.16) -if(DEFINED DEPENDENCIES_DIR) - include(${DEPENDENCIES_DIR}/modorganizer_super/cmake_common/mo2.cmake) -else() - include(${CMAKE_CURRENT_LIST_DIR}/../cmake_common/mo2.cmake) -endif() +include(CMakePackageConfigHelpers) project(githubpp) + add_subdirectory(src) + +set_target_properties(githubpp PROPERTIES + VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin + VS_DEBUGGER_COMMAND ${CMAKE_INSTALL_PREFIX}/bin/ModOrganizer.exe) +set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT githubpp) + +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/mo2-githubpp-config.cmake" + INSTALL_DESTINATION "lib/cmake/mo2-githubpp" + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) + +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/mo2-githubpp-config-version.cmake" + VERSION "0.0.1" + COMPATIBILITY AnyNewerVersion + ARCH_INDEPENDENT +) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/mo2-githubpp-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/mo2-githubpp-config-version.cmake + DESTINATION lib/cmake/mo2-githubpp +) diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..fb2f5ab --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,36 @@ +{ + "configurePresets": [ + { + "errors": { + "deprecated": true + }, + "hidden": true, + "name": "cmake-dev", + "warnings": { + "deprecated": true, + "dev": true + } + }, + { + "binaryDir": "${sourceDir}/vsbuild", + "architecture": { + "strategy": "set", + "value": "x64" + }, + "cacheVariables": { + "CMAKE_CXX_FLAGS": "/EHsc /MP /W4" + }, + "generator": "Visual Studio 17 2022", + "inherits": ["cmake-dev"], + "name": "vs2022-windows", + "toolset": "v143" + } + ], + "buildPresets": [ + { + "name": "vs2022-windows", + "configurePreset": "vs2022-windows" + } + ], + "version": 4 +} diff --git a/cmake/config.cmake.in b/cmake/config.cmake.in new file mode 100644 index 0000000..12e7d81 --- /dev/null +++ b/cmake/config.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include ( "${CMAKE_CURRENT_LIST_DIR}/mo2-githubpp-targets.cmake" ) diff --git a/src/github.h b/include/githubpp/github.h similarity index 100% rename from src/github.h rename to include/githubpp/github.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 243240c..4dcfa11 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,8 +1,51 @@ cmake_minimum_required(VERSION 3.16) +find_package(Qt6 CONFIG REQUIRED COMPONENTS Network) + add_library(githubpp STATIC) -mo2_configure_library(githubpp - WARNINGS OFF + +target_sources(githubpp + PRIVATE + github.cpp + PUBLIC + FILE_SET HEADERS + BASE_DIRS ${CMAKE_CURRENT_LIST_DIR}/../include + FILES ${CMAKE_CURRENT_LIST_DIR}/../include/githubpp/github.h +) + +target_link_libraries(githubpp PRIVATE Qt::Core Qt::Network) +set_target_properties(githubpp + PROPERTIES AUTOMOC ON - PRIVATE_DEPENDS Qt::Core Qt::Network) -mo2_install_target(githubpp) + CXX_STANDARD 20 +) +target_include_directories(githubpp PRIVATE ${CMAKE_CURRENT_LIST_DIR}/../include/githubpp) + +if (MSVC) + target_compile_options(githubpp + PRIVATE + "/MP" + "/Wall" + "/external:anglebrackets" + "/external:W0" + ) + target_link_options(githubpp + PRIVATE + $<$:/LTCG /INCREMENTAL:NO /OPT:REF /OPT:ICF> + ) + + set_target_properties(githubpp PROPERTIES + VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin + VS_DEBUGGER_COMMAND ${CMAKE_INSTALL_PREFIX}/bin/ModOrganizer.exe + VS_STARTUP_PROJECT githubpp) +endif() + +add_library(mo2::githubpp ALIAS githubpp) + +# installation +install(TARGETS githubpp EXPORT githubppTargets FILE_SET HEADERS) +install(EXPORT githubppTargets + FILE mo2-githubpp-targets.cmake + NAMESPACE mo2:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/mo2-githubpp +)