Clint,<br><br>I  still see the problem listed in #8744.  I&#39;m using CMake-2.8.0-rc3. For my projects, we reset all compiler flags so I don&#39;t really keep track of it.  <br><br>-kt<br><br><div class="gmail_quote">On Tue, Oct 13, 2009 at 3:06 PM, Clinton Stimpson <span dir="ltr">&lt;<a href="mailto:clinton@elemtech.com">clinton@elemtech.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
Oh, do you have a Release/Debug link issue with this?<br>
Does the patch in this bug report help:<br>
<a href="http://public.kitware.com/Bug/view.php?id=8744" target="_blank">http://public.kitware.com/Bug/view.php?id=8744</a><br>
<br>
Clint<br>
<div><div></div><div class="h5"><br>
On Tuesday 13 October 2009 03:56:13 pm Sebas wrote:<br>
&gt; Thanks Kelly by your explication, I learn a lot. With incorporating<br>
&gt; &quot;PROPERTIES LINKER_LANGUAGE Fortran&quot; work, without add other thing that<br>
&gt; &quot;/NODEFAULTLIB:MSVCRTD.lib&quot; (may be is it related with /MD and /MT?).<br>
&gt; For mayor understand, CLibrary in ProgramFortran Directory is for interface<br>
&gt; of fortran to CLibrary2 y CPPLibrary2. They are extern librarys that if<br>
&gt; posible not modified (SuperLU, tetgen, etc), for it &quot;extern &quot;C&quot;&quot; is<br>
&gt; incorporated in CPPLibrary.<br>
&gt; In Linux i have to use &quot;TARGET_LINK_LIBRARIES( FortranProgram CLibrary<br>
&gt; stdc++ )&quot; for link. Why?<br>
&gt; I attach second example if someone want see it.<br>
&gt;<br>
&gt; Bill, create I bug report o not?, with the first example.<br>
&gt; With 2.8 rc3 don&#39;t work in windows (don&#39;t compile test file).<br>
&gt;<br>
&gt; Thanks.<br>
&gt;<br>
&gt; Sebastian<br>
&gt;<br>
&gt; On Fri, Oct 9, 2009 at 7:05 PM, Kelly (KT) Thompson<br>
&lt;<a href="mailto:kt@transpireinc.com">kt@transpireinc.com</a>&gt;wrote:<br>
&gt; &gt; On Fri, Oct 9, 2009 at 12:49 PM, Bill Hoffman<br>
&lt;<a href="mailto:bill.hoffman@kitware.com">bill.hoffman@kitware.com</a>&gt;wrote:<br>
&gt; &gt;&gt; Kelly (KT) Thompson wrote:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;  On Fri, Oct 9, 2009 at 6:15 AM, Sebas &lt;<a href="mailto:spaseba@gmail.com">spaseba@gmail.com</a> &lt;mailto:<br>
&gt; &gt;&gt;&gt; <a href="mailto:spaseba@gmail.com">spaseba@gmail.com</a>&gt;&gt; wrote:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;    I send a example where happen explained before ( I have similar<br>
&gt; &gt;&gt;&gt;    struct in my Program). I include too the VS2008 project generate by<br>
&gt; &gt;&gt;&gt;    cmake. In the Fortran Project be can seen that use /W3 /Zm1000 /GR<br>
&gt; &gt;&gt;&gt;    /RTC1 /TP Flags that don&#39;t work with ifort.<br>
&gt; &gt;&gt;&gt;    I use CMake 2.8 rc2 (but happen same in 2.6 and 2.7)<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;    Thanks.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;    Sebastian<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Sebastian,<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; You are mixing C, C++ and Fortran sources in a single project.  This<br>
&gt; &gt;&gt;&gt; does not work well in general and particularly in CMake.  I was able to<br>
&gt; &gt;&gt;&gt; restructure your sample code so that it will build with NMake Makefile<br>
&gt; &gt;&gt;&gt; (Visual Studio 2008 SP1 and Intel Visual Fortran 11).<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Key points:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; 1. all C++ code goes into a single directory and produces a single<br>
&gt; &gt;&gt;&gt; library.  The CMakeLists.txt has the project name CPPLibrary2.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; 2. each C library is built only from C sources. The CMakeLists.txt<br>
&gt; &gt;&gt;&gt; files are given the project name CLibrary and CLibrary2.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; 3. the Fortran is also isolated into a single directory and the local<br>
&gt; &gt;&gt;&gt; CMakeLists.txt file only deals with the Fortran.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; 4. CMake needs help knowing how to build mixed language targets that<br>
&gt; &gt;&gt;&gt; must be compiled with the Fortran compiler.  In the Fortran<br>
&gt; &gt;&gt;&gt; CMakeLists.txt I had to set_target properties for LINKER_LANGUAGE.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; 5. When mixing C and Fortran on the Windows platform you must use the<br>
&gt; &gt;&gt;&gt; same type of runtime libraries (/MT or /MD).  The default Fortran build<br>
&gt; &gt;&gt;&gt; uses /MT, so I had to set these to /MD (Fortran_FLAGS)<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; 6. When interfacing C++ and Fortran code, you must mark the C++<br>
&gt; &gt;&gt;&gt; function as extern &quot;C&quot; to avoid name mangling issues.  The Fortran also<br>
&gt; &gt;&gt;&gt; expects the C++ symbol name to be all caps.  You can use Fortran&#39;s<br>
&gt; &gt;&gt;&gt; ISO_C_BINDING to get around this platform issue.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; There are many changes required to your sample build so I decided that<br>
&gt; &gt;&gt;&gt; a zip file would be the best way to return the project to you.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;  Thanks for the work around.  However, this should work a bit smoother,<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Sebastian can you create a bug report and attach your example?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Thanks.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; -Bill<br>
&gt; &gt;<br>
&gt; &gt; Bill,<br>
&gt; &gt;<br>
&gt; &gt; It is my understanding that each CMake target must be &#39;language pure&quot;<br>
&gt; &gt; The following example will work (and is less complex).  This example<br>
&gt; &gt; assumes that all sources are in a single directory (see below).  Because<br>
&gt; &gt; Sebastian had separate directories for each language, I assumed that was<br>
&gt; &gt; important for his build setup and tried to be faithful to that layout.<br>
&gt; &gt;<br>
&gt; &gt; I think the key feature that was missing from his original setup was:<br>
&gt; &gt;<br>
&gt; &gt;   set_target_properties( FortranProgram PROPERTIES LINKER_LANGUAGE<br>
&gt; &gt; Fortran )<br>
&gt; &gt;<br>
&gt; &gt; Without that that statement, CMake will build FortranProgram.obj<br>
&gt; &gt; correctly, but then try to generate the .exe by calling the MSVC linker<br>
&gt; &gt; (using the link flags for C).<br>
&gt; &gt;<br>
&gt; &gt; -kt<br>
&gt; &gt;<br>
&gt; &gt; ## Single directory equivalent CMakeLists.txt:<br>
&gt; &gt;<br>
&gt; &gt; CMAKE_MINIMUM_REQUIRED(VERSION 2.6)<br>
&gt; &gt; PROJECT( FortranProgram C CXX Fortran )<br>
&gt; &gt;<br>
&gt; &gt; # Find local headers<br>
&gt; &gt; INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR} )<br>
&gt; &gt;<br>
&gt; &gt; # Library CLibrary2<br>
&gt; &gt; ADD_LIBRARY( CLibrary2 CLibrary2.c )<br>
&gt; &gt;<br>
&gt; &gt; # Library CPPLibrary<br>
&gt; &gt; ADD_LIBRARY( CPPLibrary2 CPPLibrary2.cpp )<br>
&gt; &gt;<br>
&gt; &gt; # Library: CLibrary<br>
&gt; &gt; ADD_LIBRARY( CLibrary CLibrary.c )<br>
&gt; &gt; TARGET_LINK_LIBRARIES( CLibrary CLibrary2 CPPLibrary2 )<br>
&gt; &gt;<br>
&gt; &gt; # Fortran<br>
&gt; &gt; ADD_EXECUTABLE( FortranProgramExe FortranProgram.f90 )<br>
&gt; &gt; TARGET_LINK_LIBRARIES( FortranProgramExe CLibrary CLibrary2 CPPLibrary2 )<br>
&gt; &gt;<br>
&gt; &gt; set(CMAKE_Fortran_FLAGS_DEBUG   &quot;/Od /DDEBUG /MDd&quot; )<br>
&gt; &gt; set(CMAKE_Fortran_FLAGS_RELEASE &quot;/O2 /Ob2 /DNDEBUG /MD&quot; )<br>
&gt; &gt; set(CMAKE_Fortran_FLAGS_MINSIZEREL &quot;/Os /DNDEBUG /MD&quot; )<br>
&gt; &gt; set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO &quot;/O2 /Ob2 /DDEBUG /MD&quot; )<br>
&gt; &gt;<br>
&gt; &gt; IF( MSVC_IDE )<br>
&gt; &gt;   set_target_properties( FortranProgramExe<br>
&gt; &gt;     PROPERTIES<br>
&gt; &gt;       LINKER_LANGUAGE Fortran<br>
&gt; &gt;       LINK_FLAGS &quot;/SUBSYSTEM:CONSOLE&quot;<br>
&gt; &gt;       OUTPUT_NAME FortranProgram<br>
&gt; &gt;   )<br>
&gt; &gt; ELSEIF( WIN32 )<br>
&gt; &gt;   set_target_properties( FortranProgramExe<br>
&gt; &gt;     PROPERTIES<br>
&gt; &gt;       LINKER_LANGUAGE Fortran<br>
&gt; &gt;       OUTPUT_NAME FortranProgram<br>
&gt; &gt;   )<br>
&gt; &gt; ENDIF()<br>
<br>
</div></div>_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
</blockquote></div><br>