From 0727fa2ce7e3190512e32e0a0d15bec957ce0a97 Mon Sep 17 00:00:00 2001 From: GyEongYuN Date: Tue, 11 Jun 2024 14:55:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AEmake=20install=E8=B7=AF?= =?UTF-8?q?=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 18 ++++-------------- lib/CMakeLists.txt | 25 ++++++++++++------------- 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1750991..56f128b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,19 +56,9 @@ message(STATUS "Self added CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}") # 添加cmake目录到CMAKE_MODULE_PATH,以供 include 方法使用 list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) message(STATUS "Self added CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}") -# include方法:载入并运行来自于指定文件或模块CMAKE_MODULE_PATH下的.cmake代码 -# include(libigl) -# 特殊地:Libigl提供依赖安装选项:参考libigl/cmake/libigl.cmake -# igl_include(core) # igl_include(core) 默认包含igl::core,此行可注释 -# igl_include(glfw) # igl_include_optional(glfw) Enable the target igl::glfw - - -add_subdirectory(lib) # 添加子目录,子目录中的CMakeLists.txt将会被执行 - - -# 复制DLL文件到可执行文件目录 -# file(COPY ${CMAKE_SOURCE_DIR}/lib/Debug/WireRouting.dll DESTINATION ${PROJECT_BINARY_DIR}/Debug) +# 添加子目录,子目录中的CMakeLists.txt将会被执行 +add_subdirectory(lib) #------------REQUIRED_3 添加可执行文件------------# # 不要使用file函数中GLOB来收集文件:如果不重新运行 CMake,Make 或者其他的工具将不会知道你是否添加了某个文件 @@ -91,10 +81,10 @@ if (WIN32) unofficial-tinyxml::unofficial-tinyxml ${CMAKE_SOURCE_DIR}/build/Debug/WireRoutingLib.lib ) -else() +elseif (APPLE) target_link_libraries( ${PROJECT_NAME} PUBLIC - /opt/homebrew/Cellar/tinyxml/2.6.2/lib/libtinyxml.dylib + ${pkgcfg_lib_TINYXML_tinyxml} ${CMAKE_SOURCE_DIR}/build/lib/WireRoutingLib.dylib ) endif() diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 88387fa..f701846 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -1,8 +1,12 @@ +if (WIN32) + # MSVC不报告C4819 warning + add_compile_options(/wd4819) +endif() + aux_source_directory(${CMAKE_SOURCE_DIR}/lib/src SRC_FILES_IN_LIB) +file(GLOB INCLUDE_FILES_IN_LIB "${CMAKE_SOURCE_DIR}/lib/include/*.h") message(STATUS "SRC_FILES_IN_LIB: ${SRC_FILES_IN_LIB}") - -# 不报告C4819 warning -add_compile_options(/wd4819) +message(STATUS "INCLUDE_FILES_IN_LIB: ${INCLUDE_FILES_IN_LIB}") add_library(WireRoutingLib SHARED ${SRC_FILES_IN_LIB}) @@ -20,16 +24,11 @@ set_target_properties( get_target_property(CXX_STD_VER WireRoutingLib CXX_STANDARD) message(STATUS "C++ version using: " ${CXX_STD_VER}) -if (WIN32) -# INSTALL(TARGETS WireRoutingLib DESTINATION ${CMAKE_SOURCE_DIR}/lib) - SET_TARGET_PROPERTIES( - WireRoutingLib PROPERTIES -# LINKER_LANGUAGE C - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build - ) -endif() +# make install 转移生成链接库的目标路径 +set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/publish" CACHE PATH "Install path prefix" FORCE) +install(TARGETS WireRoutingLib ARCHIVE DESTINATION lib) +install(TARGETS WireRoutingLib LIBRARY DESTINATION lib) +install(FILES ${INCLUDE_FILES_IN_LIB} DESTINATION lib/include) target_include_directories( WireRoutingLib PUBLIC