0

我正在转换一个构建一些库并编译一些 Fortran 和 C 程序的 c-shell 脚本;它大多运作良好(尽管我确信我还没有完全遵循正确的约定!)。但是,我有一个库可以在 shell 脚本中正常编译,但不能在 CMake 下编译:

f95 -w -ffixed-line-length-132 -c mylib.for
ar cr myarchive.a mylib.o

生成.a文件。在我的 CMakeLists.txt 我有:

add_library(myarchive STATIC ${libsrc}/mylib.for)

我收到 2 个错误:

Error: Unexpected end of format string in format string at (1)
Error: Unexpected end of format string in format string at (1)

我可以通过不包含标志在命令行上复制它-ffixed-line-length-132,但我找不到如何将它包含在 CMake 中。文档有一个set(MAKE_LIBRARY_LINKER_FLAGS <STRING>)命令,我已经尝试过(并编辑为MAKE_ARCHIVE_LINKER_FLAGS),还有一个set_target_properties- 但似乎没有明确的列表来说明该命令的第三个参数可以是什么。应该有一个名为的属性STATIC_LIBRARY_FLAGS,但这似乎也不起作用

4

1 回答 1

0

由于缺少的标志 ( -ffixed-line-length-132) 是编译器标志(您将其传递给f95 -c示例中的命令),因此您应该设置编译器标志而不是链接器标志。我从未使用过 Fortran,但我认为正确的 CMake 变量是CMAKE_Fortran_FLAGS.

于 2013-06-12T10:56:42.810 回答