[CMake] Mixing C++ and Fortran
Bill Hoffman
bill.hoffman at kitware.com
Tue Jan 29 09:33:05 EST 2008
Honest Guvnor wrote:
> I am building a program with a C++ main (WxWidgets) and linking with C
> and Fortran libraries. My problem is that on each platform I am
> currently having to find the basic Fortran library (e.g. libg2c for
> g77) and include it explicitly in the target_link_libraries list.
>
> I have tried adding a dummy fortran file to the list of C++ files to
> force it know about Fortran and get prompted to declare the
> linker_language property. Setting this to C++ results in no change. I
> have downloaded and installed the current version 2.4.8 with no
> change. I have tried OSX and Linux with the same result. I have mixed
> Fortran and C in another program without problems. A mix of C++ and C
> was working in this program until the addition of the Fortran
> libraries.
>
Well, you are sort of stuck...
You can change the default linker language for any target with this
property:
SET_TARGET_PROPERITES( <tgt> PROPERTIES LINKER_LANGUAGE CXX)
Could be:
SET_TARGET_PROPERITES( <tgt> PROPERTIES LINKER_LANGUAGE Fortran)
However, you will have the same issue with C++ libraries being missing
if you change the linker language to Fortran. Fortran and C are not
really an issue since the c runtime is always there. However, Fortran
and C++ are an issue...
You might be able to put the fortran stuff in a shared library and have
the fortran runtime pulled in that way. You could write some fancy
find_* fortran stuff using try-compile that finds out the fortran run
time library.
-Bill
More information about the CMake
mailing list