我的cmake中有文件系统:
find_package(Boost 1.63.0 COMPONENTS program_options system filesystem thread REQUIRED)
当我编译时,它说Found the following Boost libraries
,包括filesystem
。
一切都编译得很好。但是,一旦我尝试包括:
#include <boost/filesystem.hpp>
我收到以下错误。这是怎么回事?
CMakeFilesrunBasicBrimusTests.dir/objects.a(boost_filesystem_check.cpp.obj): In function `_static_initialization_and_destruction_0': C:/Users/b.karjoo/Documents/boost_1_63_0/boost/system/error_code.hpp:221: undefined reference to `boost::system::generic_category()' C:/Users/b.karjoo/Documents/boost_1_63_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()' C:/Users/b.karjoo/Documents/boost_1_63_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::system_category()' collect2.exe: error: ld returned 1 exit status Brimus-Testbasic_testsCMakeFilesrunBasicBrimusTests.dirbuild.make:910: recipe for target 'Brimus-Test/basic_tests/runBasicBrimusTests.exe' failed CMakeFilesMakefile2:293: recipe for target 'Brimus-Test/basic_tests/CMakeFiles/runBasicBrimusTests.dir/all' failed mingw32-make.exe[3]: *** [Brimus-Test/basic_tests/runBasicBrimusTests.exe] Error 1 mingw32-make.exe[2]: *** [Brimus-Test/basic_tests/CMakeFiles/runBasicBrimusTests.dir/all] Error 2 mingw32-make.exe[1]: *** [Brimus-Test/basic_tests/CMakeFiles/runBasicBrimusTests.dir/rule] Error 2 CMakeFilesMakefile2:305: recipe for target 'Brimus-Test/basic_tests/CMakeFiles/runBasicBrimusTests.dir/rule' failed Makefile:169: recipe for target 'runBasicBrimusTests' failed mingw32-make.exe: *** [runBasicBrimusTests] Error 2
您应该在 cmake
中添加目标链接库。
find_package(Boost 1.63.0 COMPONENTS program_options system filesystem thread
REQUIRED)
target_link_libraries(mytarget
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
)