2013-06-12 75 views
0

我正在转换一个c-shell脚本,它构建了一些库并编译了一些Fortran和C程序;它大多运作良好(尽管我确定我并不完全遵循正确的惯例呢!)。不过,我有一个库,在shell脚本编译罚款,但不能下的CMake: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

由于缺少标志(-ffixed-line-length-132)是编译器标志(你在你的例子传递给f95 -c命令),你应该设置编译器标志而不是链接器标志。我从来没有使用Fortran,但我认为正确的CMake变量是CMAKE_Fortran_FLAGS

+0

嗯,我试着在'add_library'调用之前和之后设置'set(cmake_fortran_flags-fixed-line-length-132)'并且得到相同的错误 – ChrisW

+0

@ChrisW:可以肯定:你使用正确的大写? ('CMAKE_Fortran_FLAGS') – Job

+0

糟糕!我认为所有的CMake变量都是不区分大小写的(但我刚刚意识到只有命令名)!现在这个工作:)我不会假装理解为什么它是一个编译而不是一个链接标志:/ – ChrisW