Asio C++ 库:asio/detail/config.hpp:没有这样的文件或目录
Asio C++ Library: asio/detail/config.hpp: No such file or directory
我下载了 Boost's Asio Library 的最新单机版。现在我想将 header-only 库集成到一个简单的 qt creator c++ 项目中。但是,如果我尝试 运行 包含 asio.hpp 的 "hello world" 示例,我会收到以下错误消息(完整错误消息见下文):
asio/detail/config.hpp: No such file or directory
这些是我到目前为止采取的步骤
- 在 qt creator 中创建了一个新项目(c++ 和 qmake)
- 提取了 asio 库
- 将 asio 的 include 和 src 文件夹复制到我项目的 "libs" 目录中
在 .pro 文件中指定
应使用 c++11
配置 += c++11
此外,我尝试在我的主程序中添加以下定义:
#define ASIO_STANDALONE
#define ASIO_HAS_STD_ADDRESSOF
#define ASIO_HAS_STD_ARRAY
#define ASIO_HAS_CSTDINT
#define ASIO_HAS_STD_SHARED_PTR
#define ASIO_HAS_STD_TYPE_TRAITS
#include <iostream>
#include "libs/asio/include/asio.hpp"
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
看来qmake并不知道所有的includes。我不太熟悉 cmake、qmake 和这些东西。所以作为菜鸟,我尝试在 .pro 文件中添加一个新的 INCLUDEPATH ...
包含路径 += ./libs/asio/include
...出现新错误:
boost/detail/atomic_count.hpp: No such file or directory
这是我第一个错误的完整错误消息:
make: Entering directory `/home/ubuntu/asiotest-build-desktop-Qt_4_8_1_in_PATH__System__Release'
/usr/bin/qmake-qt4 -spec /usr/share/qt4/mkspecs/linux-g++ -o Makefile ../asiotest/asiotest.pro
make: Leaving directory `/home/ubuntu/asiotest-build-desktop-Qt_4_8_1_in_PATH__System__Release'
make: Entering directory `/home/ubuntu/asiotest-build-desktop-Qt_4_8_1_in_PATH__System__Release'
g++ -c -pipe -O2 -Wall -W -DQT_WEBKIT -I/usr/share/qt4/mkspecs/linux-g++ -I../asiotest -I../asiotest -I. -o main.o ../asiotest/main.cpp
In file included from ../asiotest/libs/asio/include/asio.hpp:18:0,
from ../asiotest/main.cpp:9:
../asiotest/libs/asio/include/asio/async_result.hpp:18:34: fatal error: asio/detail/config.hpp: No such file or directory
compilation terminated.
make: Leaving directory `/home/ubuntu/asiotest-build-desktop-Qt_4_8_1_in_PATH__System__Release'
make: *** [main.o] Error 1
17:55:01: The process "/usr/bin/make" exited with code 2.
Error while building project asiotest (target: Desktop)
When executing build step 'Make'
文件层次结构:
asiotest (project folder)
-- asiotest.pro
-- sources (folder)
---- main.cpp
-- libs (folder)
---- asio (folder)
------- include(folder)
---------- asio.hpp
---------- asio (folder)
------------- detail (folder)
------------- more folders
------- src
---------- asio.cpp
---------- asio_ssl.cpp
如何教qt在正确的目录中搜索包含文件?
注意:对于源代码周围的引用,我很抱歉,但我没有设法通过简单地使用源代码 "tag".
在编号列表中突出显示代码
也许这对这个问题的未来访问者有帮助。我设法解决了这个问题。我什至得到了 asio 运行 的 http 服务器示例。同时也从 ubuntu 切换到 debian,从 qmake 切换到 cmake 但我不认为这是最终的原因。以下 CMakeLists.txt 适合我:
project(asiotest)
cmake_minimum_required(VERSION 2.8)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -DASIO_STANDALONE -pthread")
aux_source_directory(. SRC_LIST)
include_directories(asio/include)
add_executable(${PROJECT_NAME} ${SRC_LIST})
注意 -pthread 选项。没有它我有很多链接器错误。另见 here。
文件夹结构与之前几乎相同:
asiotest (project folder)
-- [..source files of http server example..]
-- libs (folder)
---- asio (folder)
------- include(folder)
---------- asio.hpp
---------- asio (folder)
------------- detail (folder)
------------- more folders
------- src
---------- asio.cpp
---------- asio_ssl.cpp
我下载了 Boost's Asio Library 的最新单机版。现在我想将 header-only 库集成到一个简单的 qt creator c++ 项目中。但是,如果我尝试 运行 包含 asio.hpp 的 "hello world" 示例,我会收到以下错误消息(完整错误消息见下文):
asio/detail/config.hpp: No such file or directory
这些是我到目前为止采取的步骤
- 在 qt creator 中创建了一个新项目(c++ 和 qmake)
- 提取了 asio 库
- 将 asio 的 include 和 src 文件夹复制到我项目的 "libs" 目录中
在 .pro 文件中指定
应使用 c++11配置 += c++11
此外,我尝试在我的主程序中添加以下定义:
#define ASIO_STANDALONE #define ASIO_HAS_STD_ADDRESSOF #define ASIO_HAS_STD_ARRAY #define ASIO_HAS_CSTDINT #define ASIO_HAS_STD_SHARED_PTR #define ASIO_HAS_STD_TYPE_TRAITS #include <iostream> #include "libs/asio/include/asio.hpp" using namespace std; int main() { cout << "Hello World!" << endl; return 0; }
看来qmake并不知道所有的includes。我不太熟悉 cmake、qmake 和这些东西。所以作为菜鸟,我尝试在 .pro 文件中添加一个新的 INCLUDEPATH ...
包含路径 += ./libs/asio/include
...出现新错误:
boost/detail/atomic_count.hpp: No such file or directory
这是我第一个错误的完整错误消息:
make: Entering directory `/home/ubuntu/asiotest-build-desktop-Qt_4_8_1_in_PATH__System__Release'
/usr/bin/qmake-qt4 -spec /usr/share/qt4/mkspecs/linux-g++ -o Makefile ../asiotest/asiotest.pro
make: Leaving directory `/home/ubuntu/asiotest-build-desktop-Qt_4_8_1_in_PATH__System__Release'
make: Entering directory `/home/ubuntu/asiotest-build-desktop-Qt_4_8_1_in_PATH__System__Release'
g++ -c -pipe -O2 -Wall -W -DQT_WEBKIT -I/usr/share/qt4/mkspecs/linux-g++ -I../asiotest -I../asiotest -I. -o main.o ../asiotest/main.cpp
In file included from ../asiotest/libs/asio/include/asio.hpp:18:0,
from ../asiotest/main.cpp:9:
../asiotest/libs/asio/include/asio/async_result.hpp:18:34: fatal error: asio/detail/config.hpp: No such file or directory
compilation terminated.
make: Leaving directory `/home/ubuntu/asiotest-build-desktop-Qt_4_8_1_in_PATH__System__Release'
make: *** [main.o] Error 1
17:55:01: The process "/usr/bin/make" exited with code 2.
Error while building project asiotest (target: Desktop)
When executing build step 'Make'
文件层次结构:
asiotest (project folder)
-- asiotest.pro
-- sources (folder)
---- main.cpp
-- libs (folder)
---- asio (folder)
------- include(folder)
---------- asio.hpp
---------- asio (folder)
------------- detail (folder)
------------- more folders
------- src
---------- asio.cpp
---------- asio_ssl.cpp
如何教qt在正确的目录中搜索包含文件?
注意:对于源代码周围的引用,我很抱歉,但我没有设法通过简单地使用源代码 "tag".
在编号列表中突出显示代码也许这对这个问题的未来访问者有帮助。我设法解决了这个问题。我什至得到了 asio 运行 的 http 服务器示例。同时也从 ubuntu 切换到 debian,从 qmake 切换到 cmake 但我不认为这是最终的原因。以下 CMakeLists.txt 适合我:
project(asiotest)
cmake_minimum_required(VERSION 2.8)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -DASIO_STANDALONE -pthread")
aux_source_directory(. SRC_LIST)
include_directories(asio/include)
add_executable(${PROJECT_NAME} ${SRC_LIST})
注意 -pthread 选项。没有它我有很多链接器错误。另见 here。 文件夹结构与之前几乎相同:
asiotest (project folder)
-- [..source files of http server example..]
-- libs (folder)
---- asio (folder)
------- include(folder)
---------- asio.hpp
---------- asio (folder)
------------- detail (folder)
------------- more folders
------- src
---------- asio.cpp
---------- asio_ssl.cpp