我已经用Python编程了一年多,但我只是在学习C ++,并且不熟悉如何使用外部库,CMake和github。我尝试使用名为cpr的外部库 - https://github.com/whoshuu/cpr。到目前为止,我已按照“使用情况”中的说明进行操作。该链接的一部分,但不包括" add_subdirectory(cpr)"位。
到目前为止,我已经在我的C ++项目的Visual Studio项目文件夹中获得了cpr的源代码。在项目属性中,我然后添加到Include目录(在VC ++目录下)" $(SolutionDir)site_libs \ cpr \ include"并且我已将相同的内容添加到其他包含目录中(在C / C ++下 - >所有选项)。这意味着以下代码编译得很好:
#include <cpr/cpr.h>
int main(int argc, char** argv) {
auto r =
cpr::Get(cpr::Url{"https://api.github.com/repos/whoshuu/cpr/contributors"},
cpr::Authentication{"user", "pass"},
cpr::Parameters{{"anon", "true"}, {"key", "value"}});
r.status_code; // 200
r.header["content-type"]; // application/json; charset=utf-8
r.text; // JSON text string
}
但是,由于链接错误,此代码在构建时不起作用。我很确定我缺少的是实际的.lib文件,它可以找到定义这些函数等的地方(在链接器中没有设置cpr - >输入属性)。所以我想知道 - 我如何创建这个.lib文件/即使是正确的事情/这是什么&#34; add_subdirectory(cpr)&#34;我在哪里/如何运行它...基本上我该怎么做才能使整个事情发挥作用..?!我曾尝试使用CMake编译cpr,但它会引发一系列关于&#39; CMakeLists.txt&#39;不在某些文件夹中。
道歉,如果我在这里使用了任何不正确的术语,那么现在只学习C ++几天了。任何帮助都非常感谢!
答案 0 :(得分:0)
如果库不是二进制发行版(即已经构建了.lib),那么您将需要将其构建为与要使用库的代码分开的项目,该步骤将构建.lib文件。如果.sln包含在分发用途中,否则您可能必须创建自己的(或将其作为项目添加到现有解决方案中)。
一旦你有一个.lib,在项目设置的VC ++目录下添加目录,并在Linker-&gt; Input on Additional Dependencies行下添加实际的.lib文件名。
要构建库,如果分发不包含所需的VS文件,则至少需要创建项目(它可以是程序解决方案的一部分),右键单击解决方案资源管理器中的解决方案节点并选择添加 - >新项目,从那里选择Visual C ++ - &gt; Windows桌面和动态链接库或静态库。
转到Project菜单并选择Project Dependencies,将程序更改为依赖于新项目,这将设置构建顺序,以便您的程序项目在库之后构建。
您可能需要禁用预编译头文件,右键单击新项目节点选择属性,转到C / C ++ - &gt;预编译头文件并将预编译头文件&gt;预编译头文件更改为不使用预编译头文件
接下来,将标题和源文件添加到项目中并尝试构建。
如果成功,您将有一个.lib适合用于程序项目的其他依赖项,如上所述。