From 270bfd629e3b6c62a726dc3e14d24cd719596440 Mon Sep 17 00:00:00 2001 From: yony Date: Wed, 5 Jun 2024 16:53:31 +0800 Subject: [PATCH] =?UTF-8?q?DLL=E5=88=9B=E5=BB=BA=E4=BE=9D=E8=B5=96VS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 44 ++++++++++++-------------------------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a1d9083..efb872e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,28 +30,15 @@ configure_file(config.h.in config.h) #------------REQUIRED_5.1.1 find_package 添加大型第三方库(通过编译安装及包管理安装)------------# # 添加自定义依赖路径到 CMAKE_PREFIX_PATH (find_package config 模式搜索路径之一) -if (APPLE) - list(PREPEND CMAKE_PREFIX_PATH /Users/yony/CODE/Dependencies) # MacOS - # Settign pkg-config for tinyxml usage - set(ENV{PKG_CONFIG_PATH} /opt/homebrew/lib/pkgconfig/) - find_package(PkgConfig) - pkg_search_module(TINYXML REQUIRED tinyxml) - message(STATUS "=== TINYXML_LIBRARIES: ${TINYXML_LIBRARIES}") - message(STATUS "=== TINYXML_INCLUDE_DIRS: ${TINYXML_INCLUDE_DIRS}") -elseif (WIN32) - list(PREPEND CMAKE_PREFIX_PATH D:/SOURCE/Dependencies) # Windows - set(CMAKE_TOOLCHAIN_FILE "D:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake") # vcpkg - include(${CMAKE_TOOLCHAIN_FILE}) - find_package(tinyxml CONFIG REQUIRED) -elseif (UNIX) - list(PREPEND CMAKE_PREFIX_PATH /home/yony/PROJECTS/Dependencies) # Linux - find_package(tinyxml CONFIG REQUIRED) -endif() +list(PREPEND CMAKE_PREFIX_PATH D:/SOURCE/Dependencies) # Windows +set(CMAKE_TOOLCHAIN_FILE "D:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake") # vcpkg +include(${CMAKE_TOOLCHAIN_FILE}) + # 输出 find_package 系统路径和当前指定路径 message(STATUS "CMAKE_SYSTEM_PREFIX_PATH: ${CMAKE_SYSTEM_PREFIX_PATH}") message(STATUS "Self added CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}") # 指定 CONFIG 模式,查看 /share//cmake/xxxConfig.cmake 文件名决定查找包名 -# find_package(tinyxml CONFIG REQUIRED) +find_package(tinyxml CONFIG REQUIRED) #------------REQUIRED_5.1.2 include 执行.cmake中的ContentFetch模块来引入库------------# # 添加cmake目录到CMAKE_MODULE_PATH,以供 include 方法使用 @@ -82,18 +69,11 @@ add_executable( # 根据包管理工具在系统环境变量的情况,以及网络下载的包中CMakeLists.txt的编写情况 # 在这里链接库则可下方target_include_directories中可不添加 /include 或 _INCLUDE_DIRS -if (WIN32) - target_link_libraries( - ${PROJECT_NAME} PUBLIC - unofficial-tinyxml::unofficial-tinyxml - ${CMAKE_SOURCE_DIR}/lib/VSbuild/x64/Debug/WireRouting_DLL.lib - ) -else() - target_link_libraries( - ${PROJECT_NAME} PUBLIC - /opt/homebrew/Cellar/tinyxml/2.6.2/lib/libtinyxml.dylib - ) -endif() +target_link_libraries( + ${PROJECT_NAME} PUBLIC + unofficial-tinyxml::unofficial-tinyxml + ${CMAKE_SOURCE_DIR}/lib/VSbuild/x64/Debug/WireRouting_DLL.lib +) #------------OPTIONAL_1.2 添加生成的config.h头文件所在目录------------# @@ -106,8 +86,8 @@ target_include_directories( ${PROJECT_BINARY_DIR} # config.h.in 会生成配置在 build 目录 ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/lib/include - ${TINYXML_INCLUDE_DIR} # tinyxml库的头文件目录 - ${TINYXML_INCLUDE_DIRS} # pkg-config tinyxml dir + ${TINYXML_INCLUDE_DIR} # vcpkg安装的tinyxml库的头文件目录 + ${TINYXML_INCLUDE_DIRS} # pkg-config tinyxml dir(MacOS) ) # TODO: 针对 MSVC 解决生成位于msvc_19.29_cxx11_32_md_debug下dll/lib 无法链接到可执行文件的问题 \ No newline at end of file