From 50f455bd233cb47139e87bf954cfe6e829cd16ec Mon Sep 17 00:00:00 2001 From: taynpg Date: Fri, 29 Nov 2024 13:45:16 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=B7=BB=E5=8A=A0=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E5=BA=93cmake=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 24 +++++++++++++++++++----- cmake/OfenConfig.cmake.in | 16 ++++++++++++++++ cmake/OfenConfigVersion.cmake | 3 +++ 3 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 cmake/OfenConfig.cmake.in create mode 100644 cmake/OfenConfigVersion.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index a6deb84..7a6188e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,10 +8,7 @@ if (MSVC) add_compile_options(/source-charset:utf-8) endif() -if (NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Release") -endif() - +set(CMAKE_DEBUG_POSTFIX "d") message(STATUS "System: ${CMAKE_SYSTEM_NAME}") message(STATUS "Compiler CXX ID: ${CMAKE_CXX_COMPILER_ID}") @@ -31,4 +28,21 @@ set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}) add_library(Ofen STATIC ${SRC_FILES}) -target_include_directories(Ofen PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) \ No newline at end of file +target_include_directories(Ofen PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) + + +# **************************************************************************************** +install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/OfenConfig.cmake DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/cmake/Ofen) +install(TARGETS Ofen ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) +set(PACKAGE_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include") +set(PACKAGE_LIBRARY_DEBUG "${CMAKE_INSTALL_PREFIX}/lib/Ofend.lib") +set(PACKAGE_LIBRARY_RELEASE "${CMAKE_INSTALL_PREFIX}/lib/Ofen.lib") +set(CONFIG_INSTALL_DIR "lib/cmake/Ofen") +include(CMakePackageConfigHelpers) +configure_package_config_file( + "${CMAKE_CURRENT_LIST_DIR}/cmake/OfenConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/OfenConfig.cmake" + INSTALL_DESTINATION ${CONFIG_INSTALL_DIR} + PATH_VARS PACKAGE_INCLUDE_DIRS PACKAGE_LIBRARY_DEBUG PACKAGE_LIBRARY_RELEASE +) \ No newline at end of file diff --git a/cmake/OfenConfig.cmake.in b/cmake/OfenConfig.cmake.in new file mode 100644 index 0000000..bbc7632 --- /dev/null +++ b/cmake/OfenConfig.cmake.in @@ -0,0 +1,16 @@ +# OfenConfig.cmake.in + +@PACKAGE_INIT@ + +# 设置库和包含路径 +set(Ofen_INCLUDE_DIRS "@PACKAGE_INCLUDE_DIRS@") +# 支持 Debug 和 Release 的不同库路径 +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(Ofen_LIBRARIES "@PACKAGE_LIBRARY_DEBUG@") + message(STATUS "Link:${Ofen_LIBRARIES}") +elseif(CMAKE_BUILD_TYPE STREQUAL "Release") + set(Ofen_LIBRARIES "@PACKAGE_LIBRARY_RELEASE@") + message(STATUS "Link:${Ofen_LIBRARIES}") +else() + message(FATAL_ERROR "Ofen Unsupported build type: ${CMAKE_BUILD_TYPE}") +endif() \ No newline at end of file diff --git a/cmake/OfenConfigVersion.cmake b/cmake/OfenConfigVersion.cmake new file mode 100644 index 0000000..7cfc029 --- /dev/null +++ b/cmake/OfenConfigVersion.cmake @@ -0,0 +1,3 @@ +# OfenConfigVersion.cmake + +set(OFEN_PACKAGE_VERSION "0.0.1")