Refactor to create a proper CMake target.

This commit is contained in:
Mikaël Capelle
2024-07-09 14:16:05 +02:00
parent 308c00967d
commit 0f97eaa593
5 changed files with 113 additions and 9 deletions
+27 -5
View File
@@ -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
)
+36
View File
@@ -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
}
+3
View File
@@ -0,0 +1,3 @@
@PACKAGE_INIT@
include ( "${CMAKE_CURRENT_LIST_DIR}/mo2-githubpp-targets.cmake" )
+47 -4
View File
@@ -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
$<$<CONFIG:RelWithDebInfo>:/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
)