Я хочу использовать boost :: thread в своем проекте, и я использую CMake в качестве инструмента для сборки.Однако даже очень простая установка приводит к двум ошибкам компилятора:
main.cpp
#include <boost/thread.hpp>
int main()
{
boost::thread t;
return 0;
}
CMakeLists.txt
cmake_minimum_required (VERSION 2.6)
project (ThreadTest)
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost 1.58.0 COMPONENTS random thread)
set(SOURCE_DIR src)
set(SOURCE_FILES
${SOURCE_DIR}/main.cpp
)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(test ${SOURCE_FILES})
target_link_libraries(test ${Boost_LIBRARIES})
endif()
Я использую Boost 1.68.0, который CMake может найти и может создавать правильные файлы проекта Visual Studio.
Я попытался использовать boost :: random, и это сработало.
Однако компиляция вышеуказанной программы приводит к двум сообщениям об ошибках:
- E2512 : Аргументом для функции-test-macro должен быть простой идентификатор (указывает на ошибку в буст-файле error_code.hpp)
- LINK1104 : Файл 'libboost_thread-vc14 1 -mt-x64-1_68.lib' открыть нельзя
Это строка в error_code.hpp, которая выдает ошибку
![enter image description here](https://i.stack.imgur.com/GNH7D.png)
Я искал файл 'libboost_thread-vc14 1 -mt-x64-1_68.lib 'в моей установке буста, но нашел только' boost_1_68_0 \ lib64-msvc-14.0 \ boost_thread-vc14 0 -mt-gd-x64-1_68.lib '
Настройки компоновщика содержат правильные файлы:
![enter image description here](https://i.stack.imgur.com/pIq8F.png)
Итак, два моих вопроса:
- Почему возникает ошибка компиляции в error_code.hpp, который является частью модуля boost :: system и что я могу с этим поделать?
- Почему VS хочет связать файл libboost_thread-vc14 1 -mt-x64-1_68.lib вместо правильных и доступных libboost_thread-vc14 0 -mt-x64-1_68.lib?