gpt4 book ai didi

c++ - 在 Cygwin 下使用 CMake 编译库

转载 作者:搜寻专家 更新时间:2023-10-31 01:58:41 27 4
gpt4 key购买 nike

我一直在尝试使用 CMake 编译 TinyXML 作为一种小型项目,尝试学习 CMake。作为补充,我正在尝试将其编译成动态库并自行安装以使其正常工作。

到目前为止,我已经成功地编译和安装了它,但是它被编译成一个 .dll 和一个 .dll.a,让它工作的唯一方法是将它安装到/bin 和/lib 中,这使得它在两个文件夹中安装两个文件。此设置有效,但我猜 .dll 应该在/bin 中,而 .dll.a 应该在/lib 中。这是某种特定于 Cygwin 的问题还是我做错了什么?

最佳答案

.dll 是运行时库文件,它必须在运行时出现在目标系统上(并且在 $PATH 中)。 .dll.a 文件是 .dll 的导入库,它必须在链接时出现在编译机器上。您需要将 .dll 文件分发到程序应该运行的地方,将 .dll 和 .dll.a 都分发到库用于链接其他程序的地方。您不需要仅运行该程序的计算机上的 .dll.a 文件。

当您不想创建共享库时,您可以使用 static keyword 告诉 cmake在 add_library 命令中:

add_library(mylib STATIC foo.c bar.cpp)

这样不会创建共享库,但是链接器会将库中的代码添加到最终的可执行文件中。

关于c++ - 在 Cygwin 下使用 CMake 编译库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3763212/

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