gpt4 book ai didi

c - 将相互依赖的静态 C 和 Fortran 库与 CMake 链接起来?

转载 作者:行者123 更新时间:2023-11-30 19:01:25 26 4
gpt4 key购买 nike

我是 CMake 新手,并且有一个(旧)包,其中包含链接(相互依赖的)C 和 Fortran 库的 C 主程序。主程序源位于顶级目录中,C 库源位于顶级目录的子目录中,Fortran 库源位于另一个(对等)子目录中。过于简单化,看起来像:

+-- main.c
+-- mmf
| +-- (C source)
+-- prms
+-- (Fortran source)

我有一个CMakeLists.txt每个目录下都有一个文件,总共三个。他们是here , here ,和here .

一切似乎都运行良好,直到最后的链接阶段,此时:

[100%] Linking C executable PRMS
/usr/bin/ld: prms/libprms.a(ccsolrad.f90.o): in function `ccsolrad_':
ccsolrad.f90:(.text+0xbe0): undefined reference to `declvar_'
/usr/bin/ld: ccsolrad.f90:(.text+0xc4b): undefined reference to `declvar_'
/usr/bin/ld: ccsolrad.f90:(.text+0xe1d): undefined reference to `declvar_'
/usr/bin/ld: ccsolrad.f90:(.text+0xe88): undefined reference to `declvar_'

这是 Fortran 库中的一些 Fortran 代码,尝试与 C 库中的 Fortran-to-C 适配器函数链接。

有人知道如何正确执行此操作吗?

非常感谢!

最佳答案

prms使用mmf导出的符号。您需要将 prmsmmf 链接。

添加:

target_link_libraries(prms PUBLIC mmf)

this .

关于c - 将相互依赖的静态 C 和 Fortran 库与 CMake 链接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57862273/

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