Build cmake创建一个共享对象
我有三个文件: lib.c lib.h=>它们应构建为.so文件Build cmake创建一个共享对象,build,cmake,shared-libraries,Build,Cmake,Shared Libraries,我有三个文件: lib.c lib.h=>它们应构建为.so文件 c=>这应该构建为一个可执行文件 在client.c中,我包含lib.h文件,以便获得lib.c下定义的函数的声明 有人能告诉我应该使用的确切的CmakeList文件吗?这样,源区域就可以用Cmake的临时文件以及在单独的生成目录和二进制目录中生成的二进制文件和库(.dll,如果是windows,我相信)来整理吗?Cmake默认在单独的生成目录中生成(我没有测试这个例子): 你可以: mkdir build cd build cm
c=>这应该构建为一个可执行文件
在client.c中,我包含lib.h文件,以便获得lib.c下定义的函数的声明
有人能告诉我应该使用的确切的CmakeList文件吗?这样,源区域就可以用Cmake的临时文件以及在单独的生成目录和二进制目录中生成的二进制文件和库(.dll,如果是windows,我相信)来整理吗?Cmake默认在单独的生成目录中生成(我没有测试这个例子): 你可以:
mkdir build
cd build
cmake ..
make
一切都在建设中
更新:正如@chryss在下面提到的,如果您希望生成.so文件,那么命令应该是:
ADD_LIBRARY(mylib SHARED ${mylibSRCS})
此解决方案不会创建一个
.so
文件,而是创建一个cmake等效文件,以便进一步包含在cmake中。我正在寻找一个解决方案,该解决方案将提供与此等效的:
g++ -shared -Wl,-soname,plugin_lib.so.1 -o plugin_lib.so plugin_lib.o
这将生成一个插件库。因此
可以在运行时使用dlopen动态加载
解决方案缺少“共享”选项,如下所示:
ADD_LIBRARY(mylib SHARED ${mylibSRCS})
有没有办法在不执行这些shell命令的情况下始终在新目录中进行构建?我在谷歌上搜索了一下,但找不到任何有用的链接。是的。你可以
mkdir build&cd build&cmake..&make
。如果你需要超级清理你的存储库,只需删除构建目录。这会将生成的内容与你的原始资源隔离开来rces.添加库(mylib共享${mylibSRCS})
,如下面@chryss所述。
ADD_LIBRARY(mylib SHARED ${mylibSRCS})