gpt4 book ai didi

boost - CMake:如何从目标链接列表中删除重复项?

转载 作者:行者123 更新时间:2023-12-05 01:07:48 54 4
gpt4 key购买 nike

我的链接器参数列表太长,此时我收到以下错误:

Error running link command: Argument list too long



我在我的应用程序中使用了不同的 3rd 方库(包括 Qt、OpenCV、PointCloudLibrary、VTK 等),其中一些是我手动编译的,另一些是我在 Mac OS X 10.7 上通过自制软件安装的。

对于我的应用程序的实际build设置,我使用的是 CMake (2.8-9)。最近,我开始针对 PCL (PointCloudLibrary 1.6) 进行链接,这让我很头疼,并且现在报告了错误。

我的 CMake 文件如下所示:
cmake_minimum_required(VERSION 2.6)
project(cmake_test)

add_definitions( -DBOOST_ALL_NO_LIB )

add_definitions( -DBOOST_ALL_DYN_LINK )

find_package(Boost COMPONENTS iostreams system filesystem regex thread date_time timer atomic locale graph exception REQUIRED)

if(Boost_FOUND)
add_definitions("-DHAS_BOOST")
endif()

find_package(PCL REQUIRED)

include_directories(
${Boost_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
)

link_directories(
${Boost_LIBRARY_DIRS}
${PCL_LIBRARY_DIRS}
)

add_definitions(
${PCL_DEFINITIONS}
)

add_executable(cmake_test cmake_test.cpp)

target_link_libraries(cmake_test
${Boost_LIBRARIES}
${PCL_COMMON_LIBRARIES}
${PCL_IO_LIBRARIES}
${PCL_FILTERS_LIBRARIES}
${PCL_FEATURES_LIBRARIES}
${PCL_GEOMETRY_LIBRARIES}
${PCL_SEGMENTATION_LIBRARIES}
${PCL_SURFACE_LIBRARIES}
${PCL_VISUALIZATION_LIBRARIES}
)

主要问题似乎是目标链接库列表现在包含对所有 boost 库的多个引用。事实上,对于每一个 ${PCL_***_LIBRARIES}完整 ${Boost_LIBRARIES}列表被一遍又一遍地添加。

我的问题是,我如何才能删除作为第三方库依赖项出现的此类重复项,或者是否有人知道如何适本地处理此问题。

请记住,我实际上使用了此 CMake 中未列出的其他库(例如 Qt、VTK),这些库将更多项添加到目标链接列表中,最终使其变得太大,链接器无法处理。

谢谢!

最佳答案

试试 REMOVE_DUPLICATES列表操作:

list(REMOVE_DUPLICATES <list>)

这将从您指定的列表中删除所有重复项。

CMake documentation .

关于boost - CMake:如何从目标链接列表中删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18082607/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com