Hi, I attempted to use create_test_sourcelist with a Fortran routines using the recipe from the cmake book. The CMakeLists.txt and fortran file are given below. The test *.cpp file is generated correctly, but the linker gives me this: cd /home/eli/work/selfe_trunk/build/unittest/Hydro && /usr/local/dms/pkg/cmake/2.8.8/bin/cmake -E cmake_link_script CMakeFiles/Driver.dir/link.txt --verbose=1 /usr/bin/c++ -O3 -DNDEBUG CMakeFiles/Driver.dir/driver.cpp.o CMakeFiles/Driver.dir/test_attempt.F90.o -o ../../bin/Driver -rdynamic -L/usr/local/dms/pkg/hdf5/1.8.7-intel12.0-parallel/lib -lifport -lifcore -limf -lsvml -lipgo -lintlc -lpthread -lirc_s -ldl CMakeFiles/Driver.dir/driver.cpp.o:(.data+0x8): undefined reference to `test_attempt(int, char**)'
I can't tell whether this is a Fortran-C interoperability issue or some sort of linking problem. In order to reduce the interoperability issue as a confounder, I manually altered the generated driver.cpp file my Fortran file to sequentially eliminate the double pointer, then all arguments and finally the return value. In each case I got the same result: the symbol test_attempt is in test_attempt.F90.o but it is considered an undefined reference. Anyone know how to make it work? The solution should be of general interest since this is always the signature expected by create_test_sourcelist. I am on ifort with cmake 2.8.8. Thanks -- Eli ********** create_test_sourcelist(Tests driver.cpp test_attempt.F90) add_executable(Driver ${Tests}) set(TestsToRun ${tests}) remove(TestsToRun driver.cpp) foreach (test ${TestsToRun}) get_filename_component(TName ${test} NAME_WE) add_test( ${TName} Driver ${TName}) endforeach() *********** function test_attempt(argc,argv) bind( c) use iso_c_binding integer(c_int) :: test_attempt integer(c_int) :: argc type(c_ptr), dimension(1) :: argv print*, "Hello" test_attempt=0 end function
-- 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