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