Проект CMake в Visual Studio: Как добавить дополнительные каталоги include и библиотеки? - PullRequest
0 голосов
/ 10 февраля 2020

Я занимаюсь разработкой C ++ кода с использованием VisualStudio 2019.

Я использую CMake для настройки проекта.

Мне нужно использовать библиотеку boost , скомпилированную на моей удаленной машине.

В консольном приложении я могу указать путь к файлам включения, которые мне нужны, когда я go в Свойства проекта в поле Дополнительное включение каталогов . И под Дополнительные каталоги включения Я могу указать путь библиотеки повышения.

Теперь я не могу найти Свойства , когда я щелкаю правой кнопкой мыши по своему проекту, чтобы добавить то, что я нужно.

Мой каталог включения буста находится в / home / ubuntu / boost_1_70_0

Мой каталог библиотек буста находится в / home / ubuntu / boost_1_70_0 / stage

Как добавить их в мой проект CMake?

Спасибо!

РЕДАКТИРОВАТЬ:

Это мой файл CMakelists.txt:

# CMakeList.txt : CMake project for CMakeProject1, include source and define
# project specific logic here.
#
cmake_minimum_required (VERSION 3.8)

# Add source to this project's executable.
add_executable (CMakeProject1 "CMakeProject1.cpp" "CMakeProject1.h")


set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED OFF)  
set(Boost_USE_STATIC_RUNTIME OFF) 
find_package(Boost 1.70.0 REQUIRED COMPONENTS lambda) 

if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS}) 
    add_executable(CMakeProject1 CMakeProject1.cpp) 
    target_link_libraries(CMakeProject1 ${Boost_LIBRARIES})
endif()

# TODO: Add tests and install targets if needed.

И это мой . cpp file:

#include "CMakeProject1.h"
#include <iostream>
#include <iterator>
#include <algorithm>
#include <boost/lambda/lambda.hpp>
using namespace std;

int main()
{
    typedef std::istream_iterator<int> in;

    std::cout << "Type in any number: ";

    std::for_each(
        in(std::cin), in(), std::cout
        << (boost::lambda::_1 * 10)
        << "\nType in another number: ");
}

Путь моей директории Boost: / home / ubuntu / boost_1_70_0

Путь моих библиотек Boost: / home / ubuntu / boost_1_70_0 / stage

Когда я запускаю файл. cpp, возникает эта ошибка CMake:

Ошибка Ошибка CMake в CMakeProject1 / CMakeLists. txt: 13 (find_package): не удалось найти файл конфигурации пакета, предоставленный «Boost» (запрошенная версия 1.70.0) с любым из следующих имен:

BoostConfig.cmake
boost-config.cmake

Добавить префикс установки «Boost» в CMAKE_PREFIX_PATH или установите
"Boost_DIR" в каталог, содержащий один из вышеуказанных файлов. Если «Boost» предоставляет отдельный пакет разработки или SDK, убедитесь, что он установлен.

1 Ответ

0 голосов
/ 11 февраля 2020

Команда CMake find_package имеет два режима: Модуль и Режим конфигурации . Многие связанные вопросы на этом сайте содержат ответы, которые используют режим Модуль . Однако в Boost 1.70 и выше имеется файл конфигурации пакета BoostConfig.cmake или boost-config.cmake, который можно легко использовать в режиме find_package() Config . Файл конфигурации пакета должен быть создан при build Boost. Например, если вы встраиваете Boost 1.72 в каталог stage, файл BoostConfig.cmake находится здесь:

boost_1_72_0/stage/lib/cmake/Boost-1.72.0/BoostConfig.cmake

Ваша ошибка указывает на то, что вы используете режим Config , поэтому у вас есть две опции:

Опция 1

Выполните шаги, рекомендованные в сообщении об ошибке, чтобы помочь успешному завершению поиска пакета в режиме Config . Добавьте путь к вашей установке Boost к префиксному пути, добавив эту строку в файл CMake до find_package():

list(APPEND CMAKE_PREFIX_PATH /home/ubuntu/boost_1_70_0)

Option 2

Force Модуль mode установив переменную Boost_NO_BOOST_CMAKE перед вызовом find_package():

set(Boost_NO_BOOST_CMAKE ON)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...