| cmake_minimum_required (VERSION 2.8) |
| project(FortranOnly Fortran) |
| message("CTEST_FULL_OUTPUT ") |
| |
| # create a library with hello and world functions |
| add_library(FortranOnlylib hello.f world.f) |
| set_property(TARGET FortranOnlylib PROPERTY Fortran_FORMAT FIXED) |
| set_property(SOURCE world.f PROPERTY Fortran_FORMAT FREE) |
| |
| # create an executable that calls hello and world |
| add_executable(FortranOnly testf.f) |
| target_link_libraries(FortranOnly FortranOnlylib) |
| |
| # create a custom command that runs FortranOnly and puts |
| # the output into the file testfhello.txt |
| add_custom_command(OUTPUT ${FortranOnly_BINARY_DIR}/testfhello.txt |
| COMMAND ${FortranOnly_BINARY_DIR}/${CMAKE_CFG_INTDIR}/FortranOnly |
| > testfhello.txt) |
| # create a second executable FortranOnly2 that has |
| # testfhello.txt has an source file so that it will |
| # run the above custom command. |
| add_executable(FortranOnly2 testfhello.txt testf.f) |
| target_link_libraries(FortranOnly2 FortranOnlylib) |
| # create a custom target to check the content of testfhello.txt |
| # by running the cmake script checktestf2.cmake |
| add_custom_target(checktestf2 ALL |
| COMMAND ${CMAKE_COMMAND} |
| -P ${FortranOnly_SOURCE_DIR}/checktestf2.cmake) |
| |
| # create a custom target that runs FortranOnly exectuable and creates |
| # a file out.txt that should have hello world in it. |
| add_custom_target(sayhello ALL |
| COMMAND ${FortranOnly_BINARY_DIR}/${CMAKE_CFG_INTDIR}/FortranOnly > out.txt |
| ) |
| # make sure stuff is built in the right order |
| add_dependencies(checktestf2 FortranOnly2) |
| add_dependencies(sayhello FortranOnly) |
| add_dependencies(FortranOnly2 FortranOnly) |
| |
| # add a custom target that checkes that out.txt has the correct |
| # content |
| add_custom_target(checksayhello ALL |
| COMMAND ${CMAKE_COMMAND} -P ${FortranOnly_SOURCE_DIR}/checksayhello.cmake |
| ) |
| add_dependencies(checksayhello sayhello) |