build - cmake 创建一个共享对象

标签 build cmake shared-libraries

我有三个文件:

lib.c lib.h => 它们应该被构建为 .so 文件
client.c => 这应该被构建为可执行文件。
在 client.c 中,我包含 lib.h 文件,以便获取 lib.c 下定义的函数的声明

谁能告诉我我应该使用的确切 CMakeLists 文件,以便源区域不会被 Cmake 的临时文件和二进制文件和库(我相信是 windows 的情况下为 .dll)在单独的构建和二进制目录中生成?

最佳答案

此解决方案不会创建 .so 文件,而是创建一个 cmake 等效文件,以便进一步包含在 cmake 中。
我正在寻找一种解决方案,将提供与此等效的解决方案:

g++ -shared -Wl,-soname,plugin_lib.so.1 -o plugin_lib.so plugin_lib.o

这将生成一个 plugin_lib.so,可以在运行时使用 dlopen 动态加载。

解决方案缺少“共享”选项,如下所示:

ADD_LIBRARY(mylib SHARED ${mylibSRCS})

关于build - cmake 创建一个共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11293572/

相关文章:

c++ - 在共享库和 main 之间共享全局数据

maven - 运行 mvn sonar:sonar -X 时无法执行 Findbugs : java. lang.OutOfMemoryError : Java heap space,

c++ - clang : warning: argument unused during compilation: '-stdlib=libc++'

我可以强制 cmake 在特定目标中包含我的头文件吗?

gcc - 不执行共享库构造函数

c - GNU libc.so 如何既是共享对象又是独立可执行文件?

c++ - 链接 GMP 库时出错

python-3.x - 如何在没有 root 的情况下从源代码构建 Python 3.5.2

iphone - Xcode:无法在设备上启动应用程序(ExperitestServer:级别设置为:(3))

ubuntu - 在安装lightgbm的过程中,它说你应该先安装cmake,而我已经安装了它