gpt4 book ai didi

c++ 生成静态库,然后将其与 Clion/Cmake 一起使用

转载 作者:行者123 更新时间:2023-11-30 05:35:53 25 4
gpt4 key购买 nike

我一直在网上搜索并尝试了几个小时来让它工作。但是我遇到了一堵砖墙。

我有一小部分帮助程序类,它们在项目中非常有用。我想将它们放入一个静态库中,这样我就可以将它包含在我从事的任何项目中。

我已经成功创建了一个文件 libMyTestLibrary.a 并将其放在我的/usr/lib/文件夹中。我现在遇到的问题是在不同的 Clion 项目(在 linux Mint 17.2 上运行的版本 1.2)中使用该静态库

我将使用一些非常简单的站在类中来演示该过程。

myTestClass.h 文件:

//assume header guard, etc. 
class myTestClass
{
public:
int add(const int& lhs, const int& rhs) const;
};

myTestClass.cpp 文件:

#include "myTestClass.h"

int myTestClass::add(const int &lhs, const int &rhs) const
{
return lhs + rhs;
}

要生成 .a 文件,我按照 this tutorial 中的说明进行操作.

我运行以下终端命令:

beaky@BeakyDesktop ~/Documents/Programming/testProject $ g++ -c myTestClass.cpp

这成功生成了一个 myTestClass.o 文件。然后我运行:

beaky@BeakyDesktop ~/Documents/Programming/testProject $ ar cr libMyTestLibrary.a myTestClass.o

我的 .a 文件已创建。然后我使用命令将它移动到/usr/lib/中:

beaky@BeakyDesktop ~/Documents/Programming/testProject $ sudo mv libMyTestLibrary.a /usr/lib/

.a 库现在位于我的/usr/lib 文件夹中。

我创建了一个名为 testProject2 的新 Clion 项目,我想在其中使用我新创建的库。这就是我遇到麻烦的地方!

在我的 CMakeLists.txt 文件中包含以下行:

TARGET_LINK_LIBRARIES(testProject2 /usr/lib/libMyTestLibrary.a)

我虽然这会在 main.cpp(或其他任何地方)中以这种方式将库完全包含在我的项目中,并且我可以做类似的事情:

#include "myTestClass.h"

int main()
{
int result = add(1, 3);
return 0;
}

但是这会导致错误! myTestClass.h 无法找到。我是否正确包含了这个静态库?我是否应该假设我应该使用 Cmake 来包含我的自定义库?如果是这样,使用 clion 和 cmake 将我的自定义 .a 文件包含在我的项目中的正确方法是什么?

最佳答案

CMake 命令 target_link_libraries只告诉 CMake 与特定库链接,它不会做任何其他事情。

您需要指定头文件的位置,以便预处理器可以找到它们。这是通过 include_directories 完成的命令。

关于c++ 生成静态库,然后将其与 Clion/Cmake 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33723343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com