Gcc cmake:在仅存在标题的情况下使用共享库进行构建
我想Gcc cmake:在仅存在标题的情况下使用共享库进行构建,gcc,cmake,compilation,linker,Gcc,Cmake,Compilation,Linker,我想 构建在运行时依赖于共享库的二进制文件 编译二进制文件时库不存在 库的标题可用 在这种情况下,我想创建一个CMake项目。因此,我尝试了以下方法,但它肯定会抱怨缺少lib: cmake_minimum_required (VERSION 3.8) project (example) add_executable(${PROJECT_NAME} main.c ) target_link_libraries(${PROJECT_NAME} PRIVATE # s
- 构建在运行时依赖于共享库的二进制文件
- 编译二进制文件时库不存在
- 库的标题可用
cmake_minimum_required (VERSION 3.8)
project (example)
add_executable(${PROJECT_NAME}
main.c
)
target_link_libraries(${PROJECT_NAME}
PRIVATE
# system libs
lib_that_does_not_yet_exist
)
当删除指向lib\u的链接指令(该指令不存在)
时,我将得到一个未定义的引用
错误
问题:有什么方法可以完成我需要的吗
Background:我正在交叉编译二进制文件,因此lib的体系结构不正确,无法在主机上安装它。我知道有一些方法可以解决这个问题,但我主要对上面的问题感兴趣。但是你不能复制这个库并与之链接吗?肯定有一种方法可以实现你所需要的。您所描述的正是vulkan/dx12/etc所做的。我只是从来没有自己做过。如果您感兴趣,请查看vulkansdk(它是开源的)并了解它的功能。可以使用它在运行时动态加载和访问共享库,但这样会降低性能,使访问函数的代码更加复杂。最好是将目标系统的共享lib直接链接到构建系统上。告诉链接器在哪里可以找到这些lib可能有点困难,但最终你会得到一个更简单、性能更好的程序。