我想在Linux上使用Boost支持C++中的命令行標誌。我使用CMake構建應用程序,但出現錯誤「找不到-lboost_program_options」。庫boost_program_options是使用bjam獨立構建的,並且庫位於boost目錄的stage/lib子目錄中。CMake鏈接Boost:找不到-lboost_program_options
什麼工作:一種解決方法是添加使用link_directories舞臺/ lib庫,但CMake的manual狀態:
注意,這個命令很少是必要的。 find_package()和find_library()返回的庫位置是絕對路徑。
所以這不應該是必要的。
我要什麼有工作:
使用find_package應該是足夠的,但是,這並不工作,這裏的CMakeLists:
cmake_minimum_required(VERSION 3.6)
project(inp_manipulation)
set(CMAKE_CXX_STANDARD 11)
include_directories(includes lib/boost_1_62_0 lib/)
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "lib/boost_1_62_0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "lib/boost_1_62_0/stage/lib")
find_package(Boost 1.62.0)
include_directories(${Boost_INCLUDE_DIR})
file(GLOB SOURCES *.cpp)
set(MAIN_FILE main.cpp)
set(SOURCE_FILES ${SOURCES})
add_executable(inp_manipulation ${MAIN_FILE} ${SOURCE_FILES})
target_link_libraries(inp_manipulation -static-libgcc -static-libstdc++ boost_program_options)
問題
在哪裏CMakeLists中的錯誤?
提前致謝!
謝謝你的快速回答,這確實是缺少的。 –
@ DA--這不完全是你的錯 - cmake的文檔令人震驚 - 這真是太遺憾了,因爲它太棒了。 另一個說明:避免平臺特定的鏈接庫。儘可能使用cmake抽象版本。 –