为什么通过macOS上CMake中的pkg_search_module,spdlog / pthread包含目录为空?

问题描述 投票:0回答:1

环境

它们都是最新版本。

CMakeLists.txt

CMakeLists.txt是:

project(xeditd LANGUAGES CXX VERSION 0.1)

find_package(PkgConfig REQUIRED)
pkg_search_module(ICU_UC icu-uc)
pkg_search_module(SPDLOG spdlog)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wall")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ICU_UC_CXXFLAGS_OTHER}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SPDLOG_CXXFLAGS_OTHER}")

set(SRC_FILE
    xeditd.cpp
    )

set(LIB_DIR
    ${ICU_UC_LIBRARY_DIRS}
    ${SPDLOG_LIBRARY_DIRS}
    )

set(LIB
    ${ICU_UC_LIBRARIES}
    ${SPDLOG_LIBRARIES}
    )

set(INC_DIR
    ${ICU_UC_INCLUDE_DIRS}
    ${SPDLOG_INCLUDE_DIRS}
    )

message(ICU_UC_CXXFLAGS_OTHER: ${ICU_UC_CXXFLAGS_OTHER})
message(SPDLOG_CXXFLAGS_OTHER: ${SPDLOG_CXXFLAGS_OTHER})
message(ICU_UC_LIBRARY_DIRS: ${ICU_UC_LIBRARY_DIRS})
message(SPDLOG_LIBRARY_DIRS: ${SPDLOG_LIBRARY_DIRS})
message(ICU_UC_LIBRARIES: ${ICU_UC_LIBRARIES})
message(SPDLOG_LIBRARIES: ${SPDLOG_LIBRARIES})
message(ICU_UC_INCLUDE_DIRS: ${ICU_UC_INCLUDE_DIRS})
message(SPDLOG_INCLUDE_DIRS: ${SPDLOG_INCLUDE_DIRS})

link_directories(${LIB_DIR})
add_executable(xeditd ${SRC_FILE})
target_include_directories(xeditd PUBLIC ${INC_DIR})
target_link_libraries(xeditd ${LIB})

错误

消息显示:

ICU_UC_CXXFLAGS_OTHER:
SPDLOG_CXXFLAGS_OTHER:
ICU_UC_LIBRARY_DIRS:/usr/local/Cellar/icu4c/64.2/lib
SPDLOG_LIBRARY_DIRS:
ICU_UC_LIBRARIES:icuucicudata
SPDLOG_LIBRARIES:
ICU_UC_INCLUDE_DIRS:/usr/local/Cellar/icu4c/64.2/include
SPDLOG_INCLUDE_DIRS:

找不到头文件<spdlog/spdlog.h>。显然,cmake中不包含spdlog标头目录。

问题

为什么pkg_search_module适用于icu4c,但错误不适用于spdlog?而不是pthread吗?

c++ cmake pkg-config spdlog icu4c
1个回答
0
投票

IF(苹果) FIND_PACKAGE(需要spdlog)ENDIF(苹果)...

翻译是你的助手

IF(苹果) target_link_libraries(翻译PUBLIC spdlog :: spdlog)ENDIF(APPLE)

© www.soinside.com 2019 - 2024. All rights reserved.