Dear list
On Windows, MinGW (gcc 4.5.2),
CMake 2.8.4.
I have a project building two
executables. The first one builds correctly. On the second one it
appears to me as though CMake adds flags to link to the standard MinGW
libraries (mingw32, moldname, mingwex, ...) with an incorrect .lib
suffix. (See the output below) As far as I can tell this is totally
unnecessary since these flags are automatically added by the gfortran
compiler. So in the end I have -lmingw32.lib (presumably added by
CMake, which fails) and -lmingw32 (automatically added by gfortran,
which correctly links libmingw32.a)
My CMakelists file for the
target
CE_SEMFEM is
-------------------------------------------------------------------------------------------------------
cmake_minimum_required
(VERSION
2.8.4)
project (CE_SEMFEM Fortran)
set (CE_SRCS
src/CE_SEMFEM.f95
src/CE_config_module.f95
)
add_executable (CE_SEMFEM
${CE_SRCS})
target_link_libraries (CE_SEMFEM SEMFEM CE_FEMxml xmlparse)
-------------------------------------------------------------------------------------------------------
The libraries SEMFEM,
CE_FEMxml
and xmlparse are built elsewhere in the project.
Ideas how I can fix this? Any
help
is much appreciated.
Stiaan
-------------------------------------------------------------------------------------------------------
Linking Fortran executable CE_SEMFEM.exe
Driving: C:\MinGW\bin\gfortran.exe -v
CMakeFiles/CE_SEMFEM.dir/src/CE_SEMFEM.f95.obj
CMakeFiles/CE_SEMFEM.dir/src/CE_con
fig_module.f95.obj -o CE_SEMFEM.exe
-LC:\Loher_Berechner_repo\build\Utilities\xml_parser
-LC:\Loher_Berechner_repo\build
\SEMFEM\trunk\SEMFEM\core -Lc:\MinGW\lib\gcc\mingw32\4.5.2
-Lc:\MinGW\lib\gcc -Lc:\MinGW\mingw32\lib -Lc:\MinGW\lib -L\M
inGW\lib ..\..\core\SEMFEM.lib
..\..\..\..\..\Utilities\xml_parser\libCE_FEMxml.a
..\..\..\..\..\Utilities\xml_parser\li
bxmlparse.a C:\MPICH2\lib\fmpich2g.lib -lmingw32.lib -lmoldname.lib
-lmingwex.lib -lmsvcrt.lib -luser32.lib -lkernel32.l
ib -ladvapi32.lib -lshell32.lib -lmingw32.lib -lmoldname.lib
-lmingwex.lib -lmsvcrt.lib -lgfortran -shared-libgcc
Using built-in specs.
COLLECT_GCC=C:\MinGW\bin\gfortran.exe
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.5.2/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.5.2/configure
--enable-languages=c,c++,ada,fortran,objc,obj-c++
--disable-sjlj-exceptions --wi
th-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry
--enable-libstdcxx-debug --enable-version-specific-r
untime-libs --disable-werror --build=mingw32 --prefix=/mingw
Thread model: win32
gcc version 4.5.2 (GCC)
COMPILER_PATH=c:/mingw/bin/../libexec/gcc/mingw32/4.5.2/;c:/mingw/bin/../libexec/gcc/;c:/mingw/bin/../lib/gcc/mingw32/4.
5.2/../../../../mingw32/bin/
LIBRARY_PATH=c:/mingw/bin/../lib/gcc/mingw32/4.5.2/;c:/mingw/bin/../lib/gcc/;c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../..
/../../mingw32/lib/;c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../;/mingw/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'CE_SEMFEM.exe'
'-LC:\Loher_Berechner_repo\build\Utilities\xml_parser'
'-LC:\Loher_Berechn
er_repo\build\SEMFEM\trunk\SEMFEM\core'
'-Lc:\MinGW\lib\gcc\mingw32\4.5.2' '-Lc:\MinGW\lib\gcc'
'-Lc:\MinGW\mingw32\lib'
'-Lc:\MinGW\lib' '-L\MinGW\lib' '-shared-libgcc' '-mtune=i386'
'-march=i386'
c:/mingw/bin/../libexec/gcc/mingw32/4.5.2/collect2.exe -Bdynamic -u
___register_frame_info -u ___deregister_frame_info
-o CE_SEMFEM.exe c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../crt2.o
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/crtbegin.o
-LC:\Loher_Berechner_repo\build\Utilities\xml_parser
-LC:\Loher_Berechner_repo\build\SEMFEM\trunk\SEMFEM\core -Lc:\MinGW
\lib\gcc\mingw32\4.5.2 -Lc:\MinGW\lib\gcc -Lc:\MinGW\mingw32\lib
-Lc:\MinGW\lib -L\MinGW\lib -Lc:/mingw/bin/../lib/gcc/m
ingw32/4.5.2 -Lc:/mingw/bin/../lib/gcc
-Lc:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/lib
-Lc:/mingw/bin/..
/lib/gcc/mingw32/4.5.2/../../.. -L/mingw/lib
CMakeFiles/CE_SEMFEM.dir/src/CE_SEMFEM.f95.obj
CMakeFiles/CE_SEMFEM.dir/src
/CE_config_module.f95.obj ..\..\core\SEMFEM.lib
..\..\..\..\..\Utilities\xml_parser\libCE_FEMxml.a ..\..\..\..\..\Utilit
ies\xml_parser\libxmlparse.a C:\MPICH2\lib\fmpich2g.lib -lmingw32.lib
-lmoldname.lib -lmingwex.lib -lmsvcrt.lib -luser32
.lib -lkernel32.lib -ladvapi32.lib -lshell32.lib -lmingw32.lib
-lmoldname.lib -lmingwex.lib -lmsvcrt.lib -lgfortran -lmi
ngw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -luser32 -lkernel32
-ladvapi32 -lshell32 -lmingw32 -lgcc_s -lgcc -lmol
dname -lmingwex -lmsvcrt c:/mingw/bin/../lib/gcc/mingw32/4.5.2/crtend.o
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lmingw32.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lmoldname.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lmingwex.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lmsvcrt.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -luser32.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lkernel32.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -ladvapi32.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lshell32.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lmingw32.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lmoldname.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lmingwex.lib
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe:
cannot find -lmsvcrt.lib
collect2: ld returned 1 exit status
-------------------------------------------------------------------------------------------------------