cmake 2.8.9、g++ 3.4.4、Boost 1.50 を使用しています。Windows 8 64 ビットの Cygwin で。ここに私が得るエラーメッセージがあります。
CXX 実行可能ファイル RayTracer.exe CMakeFiles/RayTracer.dir/Ray_Tracer.cpp.o:Ray_Tracer.cpp:(.text+0x89c): undefined reference to
boost::system::generic_category()' CMakeFiles/RayTracer.dir/Ray_Tracer.cpp.o:Ray_Tracer.cpp:(.text+0x8a6): undefined reference to
boost::system::generic_category()' CMakeFiles/RayTracer.dir/Ray_Tracer をリンクしています。 cpp.o:Ray_Tracer.cpp:(.text+0x8b0):boost::system::system_category()' /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: CMakeFiles/RayTracer.dir/Ray_Tracer.cpp.o: bad reloc address 0xb in section
.text$_ZN5boost6system14error_categoryD1Ev[boost::system::error_category::~error_category()] への未定義の参照' collect2: ld が 1 つの終了ステータスを返しました CMakeFiles/RayTracer.dir /build.make:94: ターゲットRayTracer.exe' failed make[2]: *** [RayTracer.exe] Error 1 CMakeFiles/Makefile2:64: recipe for target
CMakeFiles/RayTracer.dir/all のレシピは make[1] に失敗しました: * [CMakeFiles/RayTracer.dir/all] エラー 2 Makefile:75: ターゲット 'all' のレシピは make に失敗しました: * [すべて] エラー 2
私が見た限りでは、よくある問題は boost システム ライブラリのリンクに失敗することですが、私はそれを確実に実行しました。私の CMakeLists.txt ファイルの関連部分は次のとおりです。
#Edit: cmake can't find the static libraries on cygwin, so I'm setting this to false for now.
SET(Boost_USE_STATIC_LIBS FALSE)
FIND_PACKAGE(Boost 1.50 REQUIRED date_time program_options thread filesystem system unit_test_framework)
IF(${Boost_FOUND})
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
ENDIF()
add_executable(RayTracer
Ray_Tracer.cpp
)
target_link_libraries(RayTracer ${Boost_PROGRAM_OPTIONS_LIBRARIES})
そして、エラーをトリガーする .cpp ファイルの行は次のとおりです。
#include <boost/filesystem.hpp>
私が間違っていることは何か分かりますか?