這簡化版,幫助是我的CMakeLists.txt:-lboost_system未定義參考`的boost ::系統:: system_category()」上的cygwin
set(CMAKE_VERBOSE_MAKEFILE ON)
cmake_minimum_required(VERSION 3.8)
project(spider)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
add_executable(spider ${SOURCE_FILES})
target_link_libraries(spider ${Boost_LIBRARIES})
target_link_libraries(spider Threads::Threads)
target_link_libraries(spider
${Boost_PROGRAM_OPTIONS_LIBRARIES}
${Boost_FILESYSTEM_LIBRARIES}
${Boost_SYSTEM_LIBRARIES}
)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lboost_system -DBOOST_SYSTEM_NO_DEPRECATED")
這是我的包括來自的main.cpp文件:我試圖下載和建設提升,它導致噸的trobules,所以我決定使用與cygwin安裝程序一起提供的提升。我有boost_system和我/ include文件夾提高,所以我沒有設置升壓在我的CMakeLists.txt:
的問題是如何處理的錯誤做:
/usr/include/boost/system/error_code.hpp:322: undefined reference to `boost::system::system_category()'
正如你所看到的,我已經試過-lboost_system和-DBOOST_SYSTEM_NO_DEPRECATED,標誌傳遞到g ++:
/usr/bin/c++.exe -lboost_system -DBOOST_SYSTEM_NO_DEPRECATED -g -Wl,--enable-auto-import CMakeFiles/spider.dir/main.cpp.o -o spider.exe -Wl,--out-implib,libspider.dll.a -Wl,--major-image-version,0,--minor-image-version,0
但這沒有幫助。有任何想法嗎 ?
您的鏈接順序錯誤。 -lboost_system必須在你的目標文件之後。我不知道如何調整你的CMakefile來解決這個問題。 –
請勿手動添加target_link_libraries,請使用FindBoost.cmake提供的變量。 – usr1234567