私はcmakeで生成されたmakefileを使用して、boostファイルシステムライブラリに依存するc++ファイルをコンパイルします。
リンクプロセス中に、次のエラーが発生します。
未定義の記号: "boost :: system :: get_generic_category()"、参照元: FaceRecognizer.cpp.oの__static_initialization_and_destruction_0(int、int) FaceRecognizer.cpp.oの__static_initialization_and_destruction_0(int、int) FaceRecognizer.cpp.oの__static_initialization_and_destruction_0(int、int) "boost :: system :: get_system_category()"、参照元: FaceRecognizer.cpp.oの__static_initialization_and_destruction_0(int、int) FaceRecognizer.cpp.oの__static_initialization_and_destruction_0(int、int) ld:シンボルが見つかりません collect2:ldが1つの終了ステータスを返しました make [2]:*** [src/ImageMarker]エラー1
このエラーを生成するmakefileからのアクションは、次の行です。
cd /Users/janusz/Documents/workspace/ImageMarker/Debug/src && / opt / local / bin / cmake -E cmake_link_script CMakeFiles / ImageMarker.dir / link.txt --verbose = 1 / usr / bin / c ++ -O3 -Wall -Wno-deprecated -g -verbose -Wl、-search_paths_first -headerpad_max_install_names -fPIC CMakeFiles / ImageMarker.dir / ImageMarker.cpp.o CMakeFiles / ImageMarker.dir / Image.cpp.o CMakeFiles /ImageMarker.dir/utils.cpp.o CMakeFiles / ImageMarker.dir / XMLWriter.cpp.o CMakeFiles / ImageMarker.dir / FaceRecognizer.cpp.o -o ImageMarker -L / opt / local / lib ../libTinyXml.a / opt / local / lib / libboost_filesystem-mt.dylib
いくつかのグーグルは、boost.systemライブラリに対してリンクするか、boost.systemライブラリに応じてプロジェクトを作成する必要があるため、このエラーがboostファイルシステムライブラリを備えたMacで一般的であるように見えることを示しました。
ライブラリパスをハードコーディングせずに、cmakeをライブラリに対してリンクさせるにはどうすればよいですか?
ここにotoolからの結果があります:
otool -L /opt/local/lib/libboost_filesystem-mt.dylib
/opt/local/lib/libboost_filesystem-mt.dylib:
/opt/local/lib/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)