リンカの引数リストが長くなりすぎて、この時点で次のエラーが表示されます。
リンク コマンドの実行中にエラーが発生しました: 引数リストが長すぎます
アプリケーションでさまざまなサードパーティ ライブラリ (Qt、OpenCV、PointCloudLibrary、VTK など) を使用しています。手動でコンパイルしたものもあれば、Mac OS X 10.7 に自作でインストールしたものもあります。
アプリケーションの実際のビルド セットアップでは、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}
)
主な問題は、ターゲット リンク ライブラリ リストにすべてのブースト ライブラリへの複数の参照が含まれるようになったことです。実際、すべて${PCL_***_LIBRARIES}
の完全な${Boost_LIBRARIES}
リストが何度も追加されています。
私の質問は、サードパーティのライブラリから依存関係として入ってくるような重複をどのように削除できるか、またはこれを適切に処理する方法を誰かが知っているかどうかです。
この CMake にリストされていない追加のライブラリ (Qt、VTK など) を実際に使用していることに注意してください。これにより、ターゲット リンク リストにさらに項目が追加され、最終的にリンカが処理するには大きすぎます。
ありがとうございました!