CMake может найти мою установленную версию boost (1.67.0), но всякий раз, когда я пытаюсь связать библиотеку, я получаю кучу "неопределенных ссылок".
Это программа, которую я хочу запустить (пример найден на сайте boost):
#include <boost/regex.hpp>
#include <iostream>
#include <string>
int main(int, char *[])
{
std::string line;
boost::regex pat("^Subject: (Re: |Aw: )*(.*)");
while(std::cin) {
std::getline(std::cin, line);
boost::smatch matches;
if(boost::regex_match(line, matches, pat)) {
std::cout << matches[2] << '\n';
}
}
return 0;
}
Это мой сценарий CMake:
cmake_minimum_required( VERSION 3.5 )
project( REGEX )
set( BOOST_ROOT D:/Dev/boost/boost_1_67_0/boost_1_67_0 )
set( Boost_LIBRARY_DIR D:/Dev/boost/boost_1_67_0/boost_1_67_0/stage/lib )
set( Boost_USE_STATIC_LIBS ON )
set( Boost_USE_MULTITHREADED ON )
find_package( Boost REQUIRED )
include_directories( ${Boost_INCLUDE_DIRS} )
add_executable( regex ${PROJECT_SOURCE_DIR}/main.cxx )
target_link_libraries( regex ${Boost_LIBRARIES} )
Что мне нужно сделать, чтобы успешно связать библиотеки boost с cmake?
EDIT:
Я изменил сценарий, теперь он выглядит так:
cmake_minimum_required( VERSION 3.5 )
project( REGEX )
set( BOOST_ROOT D:/Dev/boost/boost_1_67_0/boost_1_67_0 )
set( BOOST_INCLUDEDIR D:/Dev/boost/boost_1_67_0/boost_1_67_0/boost )
set( BOOST_LIBRARYDIR D:/Dev/boost/boost_1_67_0/boost_1_67_0/stage/lib )
set( Boost_USE_STATIC_LIBS ON )
set( Boost_USE_MULTITHREADED ON )
set( Boost_DEBUG ON )
find_package( Boost COMPONENTS regex REQUIRED )
include_directories( ${Boost_INCLUDE_DIRS} )
add_executable( regex ${PROJECT_SOURCE_DIR}/main.cxx )
target_link_libraries( regex ${Boost_LIBRARIES} )
После включения отладки для надстройки я обнаружил, что в cmake нет каталога для поиска библиотек, поэтому я попытался установить его вручную. Я только что установил версию CMake 3.11.1, но он все еще не распознает библиотеку регулярных выражений.