我正在转换一个c-shell脚本,它构建一些库并编译一些Fortran和C程序;它大部分运作良好(虽然我确定我还没有完全遵循正确的惯例!)。但是,我有一个库可以在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
的属性,但这似乎不起作用
答案 0 :(得分:0)
由于缺少标志(-ffixed-line-length-132
)是编译器标志(在示例中将其传递给f95 -c
命令),您应该设置编译器标志而不是链接器标志。我从未使用过Fortran,但我认为正确的CMake变量是CMAKE_Fortran_FLAGS
。