Using/link 静态 C++ 库 config4cpp
Using/link static c++ library config4cpp
我已将 config4cpp 提取到 lib/config4cpp 下的项目目录中。我有 运行 lib/config4cpp 中的 make 文件。
我已将此包含添加到我的项目 cpp 文件的顶部
#include "lib/config4cpp/include/config4cpp/Configuration.h"
我的 make 文件中有这一行
g++ -L./lib -c queue.cpp -lcurl -lconfig4cpp
我遇到了这个错误
g++ -c -o queue.o queue.cpp
In file included from queue.cpp:4:0:
lib/config4cpp/include/config4cpp/Configuration.h:35:34: fatal error: config4cpp/namespace.h: No such file or directory
#include <config4cpp/namespace.h>
^
compilation terminated.
<builtin>: recipe for target 'queue.o' failed
make: *** [queue.o] Error 1
所以看起来它找到了 Configuration.h 文件,但是找不到其他 header 文件之一。
我也试过了
g++ -I"lib/config4cpp/include/" -c queue.cpp
并将 header 包含更改为
#include <config4cpp/Configuration.h>
但是我遇到同样的错误,找不到 namespace.h 文件
这似乎与 运行 来自我的 make 文件有关。
output: main.o queue.o
g++ main.o queue.o -o"bin/behavior"
main.o: main.cpp
g++ -c main.cpp
message.o: queue.cpp
g++ -c queue.cpp -L"./lib" -lconfig4cpp -I"./lib/config4cpp/include"
clean:
rm *.o bin
据我所知,您没有为 g++ 提供 -I 参数,因此会发生以下情况:
您为要使用的 header 提供绝对路径。这个 header 现在是 "located" 在你的本地文件夹中(你的 .cpp 文件所在的文件夹)。当它尝试包含 "config4cpp/namespace.h" 时,它会在当前文件夹中查找。但是您本地没有 "config4cpp/namespace.h" 文件。
您需要做的是添加:
-I"lib/config4cpp/include/"
作为 g++ 的参数,具有以下文件夹结构:
$BASE_DIR
|-- config_test.cpp
|
|--lib
| |-- config4cpp.a
| |
| |-- config4cpp
| | |-- include
| | | |-- config4cpp
| | | | |-- Configuration.h
| | | | |-- namespace.h
| | | | |-- ConfigurationException.h
我已将 config4cpp 提取到 lib/config4cpp 下的项目目录中。我有 运行 lib/config4cpp 中的 make 文件。
我已将此包含添加到我的项目 cpp 文件的顶部
#include "lib/config4cpp/include/config4cpp/Configuration.h"
我的 make 文件中有这一行
g++ -L./lib -c queue.cpp -lcurl -lconfig4cpp
我遇到了这个错误
g++ -c -o queue.o queue.cpp
In file included from queue.cpp:4:0:
lib/config4cpp/include/config4cpp/Configuration.h:35:34: fatal error: config4cpp/namespace.h: No such file or directory
#include <config4cpp/namespace.h>
^
compilation terminated.
<builtin>: recipe for target 'queue.o' failed
make: *** [queue.o] Error 1
所以看起来它找到了 Configuration.h 文件,但是找不到其他 header 文件之一。
我也试过了
g++ -I"lib/config4cpp/include/" -c queue.cpp
并将 header 包含更改为
#include <config4cpp/Configuration.h>
但是我遇到同样的错误,找不到 namespace.h 文件
这似乎与 运行 来自我的 make 文件有关。
output: main.o queue.o
g++ main.o queue.o -o"bin/behavior"
main.o: main.cpp
g++ -c main.cpp
message.o: queue.cpp
g++ -c queue.cpp -L"./lib" -lconfig4cpp -I"./lib/config4cpp/include"
clean:
rm *.o bin
据我所知,您没有为 g++ 提供 -I 参数,因此会发生以下情况:
您为要使用的 header 提供绝对路径。这个 header 现在是 "located" 在你的本地文件夹中(你的 .cpp 文件所在的文件夹)。当它尝试包含 "config4cpp/namespace.h" 时,它会在当前文件夹中查找。但是您本地没有 "config4cpp/namespace.h" 文件。
您需要做的是添加:
-I"lib/config4cpp/include/"
作为 g++ 的参数,具有以下文件夹结构:
$BASE_DIR
|-- config_test.cpp
|
|--lib
| |-- config4cpp.a
| |
| |-- config4cpp
| | |-- include
| | | |-- config4cpp
| | | | |-- Configuration.h
| | | | |-- namespace.h
| | | | |-- ConfigurationException.h