diff --git a/.gitignore b/.gitignore index 0dd910d..d3f284f 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,5 @@ *.app .DS_Store -build/ \ No newline at end of file +build/ +*.sh \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 509737d..e3b9c2d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,15 @@ cmake_minimum_required(VERSION 3.15.2) # 设置工程名称和语言 -project(TRIANGLE) +project(TRIANGLE VERSION 1.6) +# 添加配置配件编写的函数 +include(CMakePackageConfigHelpers) message(STATUS "Platform: " ${CMAKE_HOST_SYSTEM_NAME}) -if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") - #set(CMAKE_C_COMPILER gcc) - #set(CMAKE_CXX_COMPILER g++) - set(CMAKE_INSTALL_PREFIX D:/Library) -endif() +# CMake默认的安装路径 Windows下为C:/Program\ Files/${Project_Name} Linux/Unix下为/usr/local message(STATUS "Install prefix: " ${CMAKE_INSTALL_PREFIX}) +# CMake默认的变异类型为空 +message(STATUS "Build type: " ${CMAKE_BUILD_TYPE}) # 添加源文件地址 add_subdirectory(src/) \ No newline at end of file diff --git a/config.sh b/config.sh deleted file mode 100755 index 22cda86..0000000 --- a/config.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -cmd=${1} -package=triangle -address=/opt/stow -targetdir=/usr/local - -if [[ ${cmd} == "configure" && ! -d "build/" ]]; then - mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX=${address}/${package} -DCMAKE_BUILD_TYPE=Release -elif [[ ${cmd} == "configure" ]]; then - cd build && rm -rf * && cmake .. -DCMAKE_INSTALL_PREFIX=${address}/${package} -DCMAKE_BUILD_TYPE=Release -elif [[ ${cmd} == "build" ]]; then - cd build && make -elif [[ ${cmd} == "install" ]]; then - cd build && sudo make install - sudo stow --dir=${address} --target=${targetdir} ${package} -fi \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9063c12..6048f86 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,8 @@ # 设定源文件文件夹 aux_source_directory(lib TRILIB_SRC) # 设置编译选项 -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") # 以下部分为库的编译 @@ -21,18 +22,36 @@ set_target_properties(trilib_static PROPERTIES COMPILE_DEFINITIONS "TRILIBRARY") set_target_properties(trilib PROPERTIES CLEAN_DIRECT_OUTPUT 1) set_target_properties(trilib_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) # 设置动态库的版本号 -set_target_properties(trilib PROPERTIES VERSION 1.6 SOVERSION 1.6) +set_target_properties(trilib PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) # 设置库文件的输出地址 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) +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) + # 库的安装命令 if(WIN32) install(TARGETS trilib DESTINATION lib) install(TARGETS trilib_static DESTINATION lib) else() install(TARGETS trilib trilib_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() # 头文件安装命令 install(FILES lib/triangle.h DESTINATION include)