首页 文章

添加boost / asio时未定义引用`boost :: system :: generic_category()'

提问于
浏览
0

我想在我的项目中使用boost.asio头,但是当我包含它的.hpp文件时,我在编译时遇到了这个输出错误:

  • 我需要用于乌鸦的boost.asio来路由我的网络请求 .

/home/john/Downloads/clion-1.2.4/bin/cmake/bin/cmake --build /home/john/.CLion12/system/cmake/generated/a3f08900/a3f08900/Release --target rcp - -j 8 [50%]链接CXX可执行文件/ home / john / projects / rightChoiceProperty / bin / rcp CMakeFiles / rcp.dir / main.cpp.o:函数 _GLOBAL__sub_I_main': main.cpp:(.text.startup+0x53): undefined reference to boost :: system :: generic_category()'main.cpp :( .text.startup 0x58):未定义引用 boost::system::generic_category()' main.cpp:(.text.startup+0x5d): undefined reference to boost :: system :: system_category()' main.cpp:(.text.startup+0x62): undefined reference to `boost::system::system_category()' collect2:错误:ld返回1退出状态CMakeFiles / rcp.dir / build.make:94:目标'/home/john/projects/rightChoiceProperty/bin/rcp'的配方失败make [3 ]: *** [/home/john/projects/rightChoiceProperty/bin/rcp] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/rcp.dir/all' failed make[2]:** [CMakeFiles / rcp.dir / all]错误2 CMakeFiles / Makefile2:79:目标的配方'CMakeFiles/rcp.dir/rule'失败make [1]: **** **[CMakeFiles/rcp.dir/rule] Error 2 Makefile:118: recipe for target 'rcp' failed make: *** [rcp]错误2

我使用CLion 1.2.4作为IDE这是我的main.cpp内容:

#include <iostream>
#include <boost/asio.hpp>

using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    return 0;
}

这是我的CMakeLists.txt文件内容:

cmake_minimum_required(VERSION 3.3)
project(rcp)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lboost_system")

set(SOURCE_FILES main.cpp)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")

include_directories("libraries/boost")

add_executable(rcp ${SOURCE_FILES})

非常感谢

1 回答

  • 2

    -l 选项不是编译器选项,它是链接器选项,因此您将其设置为错误的变量,因为 CMAKE_CXX_FLAGS 仅适用于编译器 .

    而是使用例如target_link_libraries添加库 . 喜欢

    target_link_libraries(rcp boost_system)
    

    但你真正应该做的是找到系统安装的Boost库并使用它们 . 你用find_package做到了:

    find_package(Boost
        REQUIRED COMPONENTS asio system)
    
    include_directories(${Boost_INCLUDE_DIRS})
    target_link_libraries(rcp ${Boost_LIBRARIES})
    

相关问题