Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ VisualStudio中的CMake项目:如何添加额外的包含目录和库目录?_C++_Visual Studio_Boost_Cmake_Path - Fatal编程技术网

C++ VisualStudio中的CMake项目:如何添加额外的包含目录和库目录?

C++ VisualStudio中的CMake项目:如何添加额外的包含目录和库目录?,c++,visual-studio,boost,cmake,path,C++,Visual Studio,Boost,Cmake,Path,我正在使用VisualStudio开发C++代码 我正在使用CMake配置项目 我需要使用远程机器上编译的boost库 在控制台应用程序中,当我转到项目的属性时,我可以在附加包含目录字段下放置所需包含文件的路径。 在附加Include目录下我可以放置boost库的路径 现在,当我右键单击项目以添加所需内容时,无法找到属性 我的boostinclude目录位于/home/ubuntu/boost1\u70\u0下 我的boost库目录在/home/ubuntu/boost\u 1\u 70\u 0

我正在使用VisualStudio开发C++代码

我正在使用CMake配置项目

我需要使用远程机器上编译的boost

控制台应用程序中,当我转到项目的属性时,我可以在附加包含目录字段下放置所需包含文件的路径。 在附加Include目录下我可以放置boost库的路径

现在,当我右键单击项目以添加所需内容时,无法找到属性

我的boostinclude目录位于/home/ubuntu/boost1\u70\u0下

我的boost库目录在/home/ubuntu/boost\u 1\u 70\u 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文件:

#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”添加到CMAKE_prefix_路径或设置
“Boost_DIR”到包含上述文件之一的目录。如果 “Boost”提供了一个单独的开发包或SDK,请确保 已安装

CMake的命令有两种模式:模块配置模式。本网站上的许多相关问题都以使用模块模式的答案为特色。但是,Boost 1.70及更高版本提供了一个
BoostConfig.cmake
Boost config.cmake
包配置文件,可轻松与
find_package()
config模式一起使用。包配置文件应该在构建Boost时生成。例如,如果将Boost 1.72构建到
stage
目录中,则
BoostConfig.cmake
文件位于此处:

boost_1_72_0/stage/lib/cmake/Boost-1.72.0/BoostConfig.cmake
您的错误表明您正在使用Config模式,因此您有两个选项:

选择1 执行错误消息中建议的步骤,以帮助配置模式包搜索成功完成。通过在
find_package()
之前将此行添加到CMake文件,将Boost安装的路径附加到前缀路径:

选择2 通过在调用
find_package()
之前设置变量,强制模块模式:


这回答了你的问题吗?你可能还想看看微软/vcpkg@squareskittles你能看看我的问题吗edit@ChrisMMboostconfig.cmake和boost-config.cmake是我这里缺少的吗?我必须下载它们?请您描述一下
find\u package
命令的两种模式之间的区别?我在帖子中添加了一个指向
find\u package()
文档的链接,其中有很多详细信息。关于堆栈溢出这个主题已经有一些问题了,但是很好地描述了模块和配置模式之间的区别。请看这里
boost_1_72_0/stage/lib/cmake/Boost-1.72.0/BoostConfig.cmake
list(APPEND CMAKE_PREFIX_PATH /home/ubuntu/boost_1_70_0)
set(Boost_NO_BOOST_CMAKE ON)