For custom commands in VS2010 Fortran projects the INTDIR variable is different than in the rest of the solution because Intel fortran still uses the old VS project files even in VS2010. So, we replace $(Configuration) directly in the project files. I have also added a FortranOnly test that tests this feature and is run on any generator that has Fortran abilities.
43 lines
1.6 KiB
CMake
43 lines
1.6 KiB
CMake
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)
|
|
# 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)
|