Try running cmake from the the Intel Visual Fortran Command Prompt. This will create a local environment where all of the compilers are readily available (cl and ifort).
cmake c:\mysourcecode -G"NMake Makefiles" -kt On Thu, Oct 15, 2009 at 6:08 AM, Sebas <[email protected]> wrote: > With CMake 2.8 rc3 i have next error (don't pass el test file in the > beginning): > > Check for working Fortran compiler: ifort > > Check for working Fortran compiler: ifort -- works > > Detecting Fortran compiler ABI info > > Detecting Fortran compiler ABI info - done > > Checking whether ifort supports Fortran 90 > > Checking whether ifort supports Fortran 90 -- yes > > Check for working C compiler: cl > > CMake Error: This should not have happen. If you see this message, you are > probably using a broken CMakeLists.txt file or a problematic release of > CMake > > CMake Error: Could not find cmake module > file:C:/DocSebastian/Trabajos/Pruebas_Cmake/Visual Studio > 2008/CMakeFiles/CMakeRCCompiler.cmake > > CMake Error: Internal CMake error, TryCompile configure of cmake failed > > Check for working C compiler: cl -- broken > > CMake Error at C:/Archivos de programa/CMake > 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:50 (MESSAGE): > > The C compiler "cl" is not able to compile a simple test program. > > It fails with the following output: > > CMake will not be able to correctly generate this project. > > Call Stack (most recent call first): > > CMakeLists.txt:10 (PROJECT) > > Configuring incomplete, errors occurred! > > > > Sebastian > > > > > > > On Tue, Oct 13, 2009 at 7:06 PM, Clinton Stimpson <[email protected]>wrote: > >> >> Oh, do you have a Release/Debug link issue with this? >> Does the patch in this bug report help: >> http://public.kitware.com/Bug/view.php?id=8744 >> >> Clint >> >> On Tuesday 13 October 2009 03:56:13 pm Sebas wrote: >> > Thanks Kelly by your explication, I learn a lot. With incorporating >> > "PROPERTIES LINKER_LANGUAGE Fortran" work, without add other thing that >> > "/NODEFAULTLIB:MSVCRTD.lib" (may be is it related with /MD and /MT?). >> > For mayor understand, CLibrary in ProgramFortran Directory is for >> interface >> > of fortran to CLibrary2 y CPPLibrary2. They are extern librarys that if >> > posible not modified (SuperLU, tetgen, etc), for it "extern "C"" is >> > incorporated in CPPLibrary. >> > In Linux i have to use "TARGET_LINK_LIBRARIES( FortranProgram CLibrary >> > stdc++ )" for link. Why? >> > I attach second example if someone want see it. >> > >> > Bill, create I bug report o not?, with the first example. >> > With 2.8 rc3 don't work in windows (don't compile test file). >> > >> > Thanks. >> > >> > Sebastian >> > >> > On Fri, Oct 9, 2009 at 7:05 PM, Kelly (KT) Thompson >> <[email protected]>wrote: >> > > On Fri, Oct 9, 2009 at 12:49 PM, Bill Hoffman >> <[email protected]>wrote: >> > >> Kelly (KT) Thompson wrote: >> > >> >> > >> On Fri, Oct 9, 2009 at 6:15 AM, Sebas <[email protected] <mailto: >> > >>> [email protected]>> wrote: >> > >>> >> > >>> I send a example where happen explained before ( I have similar >> > >>> struct in my Program). I include too the VS2008 project generate >> by >> > >>> cmake. In the Fortran Project be can seen that use /W3 /Zm1000 >> /GR >> > >>> /RTC1 /TP Flags that don't work with ifort. >> > >>> I use CMake 2.8 rc2 (but happen same in 2.6 and 2.7) >> > >>> >> > >>> Thanks. >> > >>> >> > >>> Sebastian >> > >>> >> > >>> >> > >>> Sebastian, >> > >>> >> > >>> You are mixing C, C++ and Fortran sources in a single project. This >> > >>> does not work well in general and particularly in CMake. I was able >> to >> > >>> restructure your sample code so that it will build with NMake >> Makefile >> > >>> (Visual Studio 2008 SP1 and Intel Visual Fortran 11). >> > >>> >> > >>> Key points: >> > >>> >> > >>> 1. all C++ code goes into a single directory and produces a single >> > >>> library. The CMakeLists.txt has the project name CPPLibrary2. >> > >>> >> > >>> 2. each C library is built only from C sources. The CMakeLists.txt >> > >>> files are given the project name CLibrary and CLibrary2. >> > >>> >> > >>> 3. the Fortran is also isolated into a single directory and the >> local >> > >>> CMakeLists.txt file only deals with the Fortran. >> > >>> >> > >>> 4. CMake needs help knowing how to build mixed language targets that >> > >>> must be compiled with the Fortran compiler. In the Fortran >> > >>> CMakeLists.txt I had to set_target properties for LINKER_LANGUAGE. >> > >>> >> > >>> 5. When mixing C and Fortran on the Windows platform you must use >> the >> > >>> same type of runtime libraries (/MT or /MD). The default Fortran >> build >> > >>> uses /MT, so I had to set these to /MD (Fortran_FLAGS) >> > >>> >> > >>> 6. When interfacing C++ and Fortran code, you must mark the C++ >> > >>> function as extern "C" to avoid name mangling issues. The Fortran >> also >> > >>> expects the C++ symbol name to be all caps. You can use Fortran's >> > >>> ISO_C_BINDING to get around this platform issue. >> > >>> >> > >>> There are many changes required to your sample build so I decided >> that >> > >>> a zip file would be the best way to return the project to you. >> > >>> >> > >>> Thanks for the work around. However, this should work a bit >> smoother, >> > >> >> > >> Sebastian can you create a bug report and attach your example? >> > >> >> > >> Thanks. >> > >> >> > >> -Bill >> > > >> > > Bill, >> > > >> > > It is my understanding that each CMake target must be 'language pure" >> > > The following example will work (and is less complex). This example >> > > assumes that all sources are in a single directory (see below). >> Because >> > > Sebastian had separate directories for each language, I assumed that >> was >> > > important for his build setup and tried to be faithful to that layout. >> > > >> > > I think the key feature that was missing from his original setup was: >> > > >> > > set_target_properties( FortranProgram PROPERTIES LINKER_LANGUAGE >> > > Fortran ) >> > > >> > > Without that that statement, CMake will build FortranProgram.obj >> > > correctly, but then try to generate the .exe by calling the MSVC >> linker >> > > (using the link flags for C). >> > > >> > > -kt >> > > >> > > ## Single directory equivalent CMakeLists.txt: >> > > >> > > CMAKE_MINIMUM_REQUIRED(VERSION 2.6) >> > > PROJECT( FortranProgram C CXX Fortran ) >> > > >> > > # Find local headers >> > > INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR} ) >> > > >> > > # Library CLibrary2 >> > > ADD_LIBRARY( CLibrary2 CLibrary2.c ) >> > > >> > > # Library CPPLibrary >> > > ADD_LIBRARY( CPPLibrary2 CPPLibrary2.cpp ) >> > > >> > > # Library: CLibrary >> > > ADD_LIBRARY( CLibrary CLibrary.c ) >> > > TARGET_LINK_LIBRARIES( CLibrary CLibrary2 CPPLibrary2 ) >> > > >> > > # Fortran >> > > ADD_EXECUTABLE( FortranProgramExe FortranProgram.f90 ) >> > > TARGET_LINK_LIBRARIES( FortranProgramExe CLibrary CLibrary2 >> CPPLibrary2 ) >> > > >> > > set(CMAKE_Fortran_FLAGS_DEBUG "/Od /DDEBUG /MDd" ) >> > > set(CMAKE_Fortran_FLAGS_RELEASE "/O2 /Ob2 /DNDEBUG /MD" ) >> > > set(CMAKE_Fortran_FLAGS_MINSIZEREL "/Os /DNDEBUG /MD" ) >> > > set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "/O2 /Ob2 /DDEBUG /MD" ) >> > > >> > > IF( MSVC_IDE ) >> > > set_target_properties( FortranProgramExe >> > > PROPERTIES >> > > LINKER_LANGUAGE Fortran >> > > LINK_FLAGS "/SUBSYSTEM:CONSOLE" >> > > OUTPUT_NAME FortranProgram >> > > ) >> > > ELSEIF( WIN32 ) >> > > set_target_properties( FortranProgramExe >> > > PROPERTIES >> > > LINKER_LANGUAGE Fortran >> > > OUTPUT_NAME FortranProgram >> > > ) >> > > ENDIF() >> >> _______________________________________________ >> Powered by www.kitware.com >> >> Visit other Kitware open-source projects at >> http://www.kitware.com/opensource/opensource.html >> >> Please keep messages on-topic and check the CMake FAQ at: >> http://www.cmake.org/Wiki/CMake_FAQ >> >> Follow this link to subscribe/unsubscribe: >> http://www.cmake.org/mailman/listinfo/cmake >> > > > _______________________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Follow this link to subscribe/unsubscribe: > http://www.cmake.org/mailman/listinfo/cmake >
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake
