[CMake] Fortran Macro in 2.2
Karl Merkley
karl at elemtech.com
Thu Oct 20 11:48:42 EDT 2005
I did find that the language name is case sensitive "Fortran". Also,
the current docs indicate C++ as an option and it appears that it is
really CXX.
Thanks for the hint!
Karl
On Oct 20, 2005, at 8:49 AM, William A. Hoffman wrote:
> You may want to try cmake's native fortran support.
>
> PROJECT(foo FORTRAN)
> ADD_EXECUTABLE(foo foo.f)
>
>
>
> At 10:41 AM 10/20/2005, Karl Merkley wrote:
>> I am using Mac OS X CMake version 2.2.1 or cvs CMake version
>> 2.3-20050922.
>>
>> I have a macro that we use to compile fortran code. However, it
>> looks like it no longer works with the latest code.
>>
>> # Define a macro to compile Fortran code
>> MACRO(F77 var outvar)
>> SET(new_objs "")
>> FOREACH(var_src ${var})
>> GET_FILENAME_COMPONENT(var_src_file "${var_src}" NAME_WE)
>> SET(var_obj ${var_src_file}${CML_OBJ_EXT})
>> # this is a generated file
>> SET_SOURCE_FILES_PROPERTIES(${var_obj} PROPERTIES GENERATED ON)
>> SET(new_objs ${new_objs} "${var_obj}")
>> ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${var_obj}
>> COMMAND ${CML_FXX_COMPILER}
>> ARGS ${CML_FXX_OUT}
>> ${CMAKE_CURRENT_BINARY_DIR}/${var_obj} ${CML_FXX_INCLUDE}
>> ${CML_FXX_FLAGS} ${var_src}
>> DEPENDS ${var_src}
>> COMMENT "${CML_FXX_COMPILER} object file"
>> )
>> ENDFOREACH(var_src)
>> SET(${outvar} ${new_objs})
>> ENDMACRO(F77)
>>
>> The macro gets invoked as
>>
>> F77("${INR_F_SRCS}" INR_F_OBJS)
>>
>> The list of source files have .f extensions and the return argument
>> contains the list of object files that are produced. The object
>> files then get added to a library.
>>
>> ADD_LIBRARY(cml_lib ${INR_C_SRCS} ${INR_F_OBJS} )
>>
>> There is a lot more that goes on in the CMakeLists.txt but this is
>> the core of the problem. When I run cmake/make the C files get added
>> to the library but the object files do not. When I look in the
>> build.make file, there are instructions to compile the Fortran code
>> but there is no dependency on the object files to be added to the
>> library so they never get built and never get added to the library.
>>
>> Can anybody suggest a way to work around this? I have a customer who
>> is trying to build the library on Mac OS X 10.4 system which I don't
>> have. I would like to be able to provide a solution ASAP.
>>
>> Thanks,
>> Karl
>>
>> _______________________________________________
>> CMake mailing list
>> CMake at cmake.org
>> http://www.cmake.org/mailman/listinfo/cmake
>
>
More information about the CMake
mailing list