|
|
@ -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 模式,查看 <deps_dir>/share/<lib_name>/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中可不添加 <lib_name>/include 或 <LIB_NAME>_INCLUDE_DIRS |
|
|
|
|
|
|
|
if (WIN32) |
|
|
|
target_link_libraries( |
|
|
|
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() |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
#------------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 无法链接到可执行文件的问题 |