生成 Wt 项目时出错。无法打开包含文件:'boost/any.hpp'
Error on building a Wt project. Cannot open include file: 'boost/any.hpp'
Wt v.3.2.2和boost libraries v.1.47已成功安装在我的计算机中,安装过程中没有出现任何错误。一些简单的Wt和Boost示例在测试过程中被编译并正确运行。我使用为MSVC 2008配置的CMake为我自己的Wt项目创建构建文件。
然而,当我尝试构建自己的项目时,我遇到了这个错误(无法打开包含文件:"boost/any.hpp")。正如我所看到的,boost/aany.hpp包含在Wt/W应用程序头文件中。
为了获得进一步的帮助,我的CMakeLists.txt文件内容如下:CMakeLists.txt放置在项目目录:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(WT_EXAMPLE)
SET (WT_CONNECTOR "wthttp" CACHE STRING "Connector used (wthttp or wtfcgi)")
ADD_SUBDIRECTORY(source)
CMakeLists.txt放在源目录:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
SET(WT_INSTALL_DIR "C:/Program Files/WT/boost_1_47")
SET(BOOST_INSTALL_DIR "C:/Program Files/boost")
ADD_EXECUTABLE(
GOP.wt
Main.C
)
SET(WT_LIBS
optimized wthttp debug wthttpd
optimized wt debug wtd)
SET(BOOST_LIBS
boost_signals boost_regex boost_thread boost_filesystem boost_system
boost_random boost_date_time boost_program_options)
TARGET_LINK_LIBRARIES (
GOP.wt
${WT_LIBS} ${BOOST_LIBS} ${SYSTEM_LIBS}
)
LINK_DIRECTORIES (
${WT_INSTALL_DIR}/lib/
${BOOST_INSTALL_DIR}/lib/
)
INCLUDE_DIRECTORIES(${WT_INSTALL_DIR}/include)
INCLUDE_DIRECTORIES(${BOOST_INSTALL_DIR}/include)
正如我在Wt构建目录上的CMakeCache.txt中所看到的,已经找到了提升库的路径,但。。。这条线怎么样?
//The directory containing a CMake configuration file for Boost.
Boost_DIR:PATH=Boost_DIR-NOTFOUND
我在Wt支持论坛上问了这个问题,但我在大约24小时内都没有得到答案。。。
更新:我发现any.hpp被放在C:\Program Files\boost\boost_1_47\boost\spirit\home\support\agorithm\any.hpp上。所以,我怀疑搜索any.hpp的路径有一个概念(它不直接包含在boost目录中)。
问题已解决。我做了一个新的Wt构建,我在一个新路径中放置和重建boost,我为这个项目写了CMakeLists,并更加谨慎。
包含<boost/any.hpp>
例如
#include <boost/any.hpp>
#include <iostream>
#include <vector>
#include <string>
int main() {
std::vector<boost::any> some_values;
some_values.push_back(10);
const char* c_str = "Hello there!";
some_values.push_back(c_str);
some_values.push_back(std::string("Wow!"));
std::string& s = boost::any_cast<std::string&>(some_values.back());
s += " That is great!n";
std::cout << s;
}
我们只需要一个像这样的简单cmake文件
# Defines AppBase library target.
project(recipe_01)
cmake_minimum_required(VERSION 3.5)
include(GNUInstallDirs)
set(CMAKE_EXPORT_COMPILE_COMMANDS "ON")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
if(CMAKE_CXX_STANDARD EQUAL 98 OR CMAKE_CXX_STANDARD LESS 14)
message(FATAL_ERROR "app requires c++14 or newer")
elseif(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()
find_package(Boost 1.60 REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main)
相关文章:
- boost::文件系统::recursive_directory_iterator多线程安全
- 使用 Boost.Spirit 解析具有混合数据类型的 OBJ 文件?
- 避免使用 boost::进程间::消息队列创建文件
- 使用Boost文件系统C++将具有特定扩展名的文件的名称保存在特定文件夹中
- Boost program_options将多个配置文件解析结果存储到一个parsed_options中
- 告诉CMake链接到自定义文件夹中的Boost
- 致命错误:找不到'boost/uuid/uuid.hpp'文件
- 使用boost::mapped_region增长文件以供进一步写入?
- 造成致命错误:boost/fusion/iterator/equal_to.hpp 没有这样的文件或目录
- 通过boost asio iostream下载大文件的最快方法是什么?
- 将 boost::文件系统::p ath 转换为 char?
- 使用 boost::regex 从目录中获取带有一些正则表达式的文件名称时出现意外输出
- 可以将Boost消息队列文件重定向到用户指定的位置
- boost::p rogram_options 配置文件格式
- 如何在Boost::program_options配置文件中为非字符串的自定义选项值类型处理空格
- boost日志文件无法创建sample.log文件
- 如何修复"无法打开包含文件'boost/config.hpp':没有这样的文件或目录(包括目录涵盖:C:\程序文件\boost\boost_1_67_0)
- C 可以在程序执行过程中移动内存映射的文件(boost :: intercecess)移动
- 包括cmake头文件boost.hpp和cmake
- 查找最后添加的文件(boost)