C++ VisualStudio中的CMake项目:如何添加额外的包含目录和库目录?
我正在使用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文件: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
# 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)