Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gcc cmake:在仅存在标题的情况下使用共享库进行构建_Gcc_Cmake_Compilation_Linker - Fatal编程技术网

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项目。因此,我尝试了以下方法,但它肯定会抱怨缺少lib:

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可能有点困难,但最终你会得到一个更简单、性能更好的程序。