From 6d0a00c8cc9a11a091e6b52ed68c9be066ad4c91 Mon Sep 17 00:00:00 2001 From: Yi Zhang Date: Sat, 28 Aug 2021 11:33:30 +0800 Subject: [PATCH] add config.cmake.in --- CITATION.txt | 0 CMakeLists.txt | 25 +++++++++---------------- LICENSE.txt | 0 LibTessConfig.cmake.in | 15 +++++++++++++++ README.md | 0 lib/CMakeLists.txt | 36 +++++++++++++++++++++++------------- stow-config.sh | 3 +++ test/CMakeLists.txt | 11 ++--------- toolkits/CMakeLists.txt | 15 ++++----------- 9 files changed, 56 insertions(+), 49 deletions(-) mode change 100755 => 100644 CITATION.txt mode change 100755 => 100644 LICENSE.txt create mode 100644 LibTessConfig.cmake.in mode change 100755 => 100644 README.md create mode 100755 stow-config.sh diff --git a/CITATION.txt b/CITATION.txt old mode 100755 new mode 100644 diff --git a/CMakeLists.txt b/CMakeLists.txt index a75d034..a0cc7be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,25 +1,18 @@ cmake_minimum_required(VERSION 3.15.2) # 设置项目名称与语言 -project(LIBTESS VERSION 1.6) -# 设置安装地址 -if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux") - message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME}) - set(CMAKE_INSTALL_PREFIX /usr/local) -elseif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin") - message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME}) - # 安装到系统级用户软件目录 - set(CMAKE_INSTALL_PREFIX /opt) -elseif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") - message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME}) - # 使用MinGW GCC编译时需取消注释 - #set(CMAKE_C_COMPILER gcc) - #set(CMAKE_CXX_COMPILER g++) +project(LibTess VERSION 1.6 LANGUAGES C) +# 添加配置配件编写的函数 +include(CMakePackageConfigHelpers) + +if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") set(CMAKE_INSTALL_PREFIX D:/Library) else() - message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME}) - set(CMAKE_INSTALL_PREFIX /usr/local) + set(CMAKE_INSTALL_PREFIX /opt/stow/tess) endif() + +message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME}) message(STATUS "Install prefix: " ${CMAKE_INSTALL_PREFIX}) +message(STATUS "Build type: " ${CMAKE_BUILD_TYPE}) # 添加库源文件地址 add_subdirectory(lib) diff --git a/LICENSE.txt b/LICENSE.txt old mode 100755 new mode 100644 diff --git a/LibTessConfig.cmake.in b/LibTessConfig.cmake.in new file mode 100644 index 0000000..f5bc6a6 --- /dev/null +++ b/LibTessConfig.cmake.in @@ -0,0 +1,15 @@ +@PACKAGE_INIT@ + +set(@PROJECT_NAME@_Version "@PROJECT_VERSION@") +set_and_check(@PROJECT_NAME@_INSTALL_PREFIX "${PACKAGE_PREFIX_DIR}") +set_and_check(@PROJECT_NAME@_INC_DIR "${PACKAGE_PREFIX_DIR}/include") +set_and_check(@PROJECT_NAME@_INCULDE_DIR "${PACKAGE_PREFIX_DIR}/include") +set_and_check(@PROJECT_NAME@_LIB_DIR "${PACKAGE_PREFIX_DIR}/lib") +set_and_check(@PROJECT_NAME@_LIBRARY_DIR "${PACKAGE_PREFIX_DIR}/lib") + +set(@PROJECT_NAME@_LIB lcg) +set(@PROJECT_NAME@_LIBRARY lcg) +set(@PROJECT_NAME@_FOUND 1) + +# include target information +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") \ No newline at end of file diff --git a/README.md b/README.md old mode 100755 new mode 100644 diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index cfe97f4..6ce57e9 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -1,17 +1,9 @@ # 设置编译选项 -if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") -endif() - +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lm -O2") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lm") endif() -if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") -endif() - - # 设置库文件的输出地址 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) @@ -30,7 +22,7 @@ set_target_properties(tess_static PROPERTIES OUTPUT_NAME "tess") set_target_properties(tess PROPERTIES CLEAN_DIRECT_OUTPUT 1) set_target_properties(tess_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) # 设置动态库的版本号 -set_target_properties(tess PROPERTIES VERSION 1.6 SOVERSION 1.6) +set_target_properties(tess PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) # 链接动态库 if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux") @@ -38,14 +30,32 @@ if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux") target_link_libraries(tess_static m.a) endif() +set(CONFIG_FILE_PATH lib/cmake/${PROJECT_NAME}) + +configure_package_config_file(${PROJECT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in + ${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake + INSTALL_DESTINATION ${CONFIG_FILE_PATH} + NO_CHECK_REQUIRED_COMPONENTS_MACRO) + +write_basic_package_version_file(${CMAKE_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion) + # 库的安装命令 安装到/opt/lib if(WIN32) install(TARGETS tess DESTINATION lib) install(TARGETS tess_static DESTINATION lib) else() install(TARGETS tess tess_static - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib) + EXPORT ${PROJECT_NAME}Targets + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) + install(EXPORT ${PROJECT_NAME}Targets + DESTINATION ${CONFIG_FILE_PATH}) + install(FILES + ${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake + ${CMAKE_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + DESTINATION ${CONFIG_FILE_PATH}) endif() # 头文件安装命令 diff --git a/stow-config.sh b/stow-config.sh new file mode 100755 index 0000000..67724d6 --- /dev/null +++ b/stow-config.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sudo stow --dir=/opt/stow --target=/usr/local tess \ No newline at end of file diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 9dc8644..c130f6e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,14 +1,7 @@ # 设置编译选项 -if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") -endif() - +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lm -O2") -endif() - -if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lm") endif() # 设置可执行文件的输出地址 diff --git a/toolkits/CMakeLists.txt b/toolkits/CMakeLists.txt index 4453479..786d069 100644 --- a/toolkits/CMakeLists.txt +++ b/toolkits/CMakeLists.txt @@ -1,14 +1,7 @@ # 设置编译选项 -if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") -endif() - +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lm -O2") -endif() - -if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lm") endif() # 设置可执行文件的输出地址 @@ -19,11 +12,11 @@ macro(add_tools name) # 添加可执行程序名称 add_executable(${name} ${name}.c) # 设置安装后的动态库调用地址 - set_target_properties(${name} PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib) + set_target_properties(${name} PROPERTIES INSTALL_RPATH ${PACKAGE_PREFIX_DIR}/lib) # 链接动态库 target_link_libraries(${name} PUBLIC tess) # 将可执行程序安装到/opt/bin/tess - install(TARGETS ${name} RUNTIME DESTINATION bin/tess) + install(TARGETS ${name} RUNTIME DESTINATION sbin) endmacro() # 添加tools