【发布时间】:2021-12-12 14:48:57
【问题描述】:
我刚刚开始参与我的第一个 cmake 项目。该项目包含许多静态库和一个将它们全部链接起来的可执行文件。
目前,静态库“this_lib”之一的典型 CMakeLists.txt 具有以下形式:
target_include_directories(
this_lib
PUBLIC
$<INSTALL_INTERFACE:include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
${Boost_INCLUDE_DIRS}
)
target_link_libraries (this_lib PUBLIC
lib1
lib2
lib3
lib4
lib5
${Boost_LIBRARIES}
)
target_link_libraries 在生成的 vcxproj 文件中以 Visual Studio ProjectReference 条目的形式添加额外的包含目录和项目依赖项。因此,'this_lib' 不会与其他库同时编译,这大大增加了编译时间。
那么有没有办法配置target_link_libraries ,使其不会在 Visual Studio 中添加项目引用?
这是我迄今为止尝试过的:
如果我将参数从target_link_libraries 移动到target_include_directories,则会出现编译错误(缺少包含),因为target_link_libraries 似乎是递归操作的,这意味着它也添加了链接库的包含目录。
【问题讨论】:
标签: cmake linker include include-path