【发布时间】:2012-07-31 14:12:49
【问题描述】:
Wt v. 3.2.2 和 boost libraries v. 1.47 已成功安装在我的计算机中,安装过程中没有出现任何错误。在测试过程中编译并正确运行了一些简单的 Wt 和 Boost 示例。我使用为 MSVC 2008 配置的 CMake 为我自己的 Wt 项目创建构建文件。
但是,当我尝试构建自己的项目时,出现此错误(无法打开包含文件:'boost/any.hpp')。如我所见,boost/any.hpp 包含在 Wt/WApplication 头文件中。
如需进一步帮助,我的 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 中看到的,找到了 boost 库的路径,但是……这一行呢?
//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\algorithm\any.hpp。所以,我怀疑有一个搜索any.hpp的路径的概念(它不直接包含在boost目录中)。
【问题讨论】:
-
已将 INCLUDE_DIRECTORIES(${BOOST_INSTALL_DIR}/include) 更改为 INCLUDE_DIRECTORIES(${BOOST_INSTALL_DIR}),但这并没有解决我的问题。
-
我总是在 add_executable 之前执行 include_directories。你确定顺序不重要吗?
-
@lap Wt 支持论坛上的一位版主将其发布为 CMakeLists 文件格式,用于生成生成文件以构建用户应用程序。见redmine.webtoolkit.eu/boards/2/topics/4714
-
我看不出你在哪里使用
FindWt和FindBoost模块。尝试message(STATUS ${BOOST_INSTALL_DIR})检查是否定义了这个变量。 -
据我所知,如果 Wt 和 Boost 的安装路径已知并给定,则无需使用 FindWt 和 FindBoost。无论如何,我设法解决了这个问题......