ENH: Add tests of Fortran module dependencies across directories and on external modules. Tests based on cases provided by Maik in issue #5809.
This commit is contained in:
parent
81f6e86f12
commit
f4fb1a4f91
|
@ -22,5 +22,34 @@ IF(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
|
|||
in_interface/main.f90
|
||||
in_interface/module.f90)
|
||||
|
||||
# Build the external project separately using a custom target.
|
||||
# Make sure it uses the same build configuration as this test.
|
||||
IF(CMAKE_CONFIGURATION_TYPES)
|
||||
SET(External_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
|
||||
ELSE(CMAKE_CONFIGURATION_TYPES)
|
||||
SET(External_CONFIG_TYPE)
|
||||
ENDIF(CMAKE_CONFIGURATION_TYPES)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${testf_BINARY_DIR}/ExternalProject
|
||||
COMMAND ${CMAKE_CTEST_COMMAND}
|
||||
ARGS ${External_CONFIG_TYPE}
|
||||
--build-and-test
|
||||
${testf_SOURCE_DIR}/External
|
||||
${testf_BINARY_DIR}/External
|
||||
--build-noclean
|
||||
--build-two-config
|
||||
--build-project ExtFort
|
||||
--build-generator ${CMAKE_GENERATOR}
|
||||
--build-makeprogram ${CMAKE_MAKE_PROGRAM}
|
||||
--build-options -DCMAKE_Fortran_COMPILER:STRING=${CMAKE_Fortran_COMPILER}
|
||||
-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}
|
||||
-DCMAKE_Fortran_FLAGS_DEBUG:STRING=${CMAKE_Fortran_FLAGS_DEBUG}
|
||||
-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}
|
||||
-DCMAKE_Fortran_FLAGS_MINSIZEREL:STRING=${CMAKE_Fortran_FLAGS_MINSIZEREL}
|
||||
-DCMAKE_Fortran_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_Fortran_FLAGS_RELWITHDEBINFO}
|
||||
)
|
||||
ADD_CUSTOM_TARGET(ExternalTarget ALL DEPENDS ${testf_BINARY_DIR}/ExternalProject)
|
||||
|
||||
ADD_SUBDIRECTORY(Library)
|
||||
ADD_SUBDIRECTORY(Executable)
|
||||
ENDIF(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
include_directories(${testf_BINARY_DIR}/Library)
|
||||
include_directories(${testf_BINARY_DIR}/External)
|
||||
link_directories(${testf_BINARY_DIR}/External)
|
||||
|
||||
add_executable(subdir_exe2 main.f90)
|
||||
target_link_libraries(subdir_exe2 subdir_mods)
|
||||
add_dependencies(subdir_exe2 ExternalTarget)
|
||||
target_link_libraries(subdir_exe2 myext)
|
|
@ -0,0 +1,6 @@
|
|||
PROGRAM MAINF90
|
||||
USE libraryModuleA
|
||||
USE libraryModuleB
|
||||
USE externalMod
|
||||
CALL printExtModGreeting
|
||||
END PROGRAM MAINF90
|
|
@ -0,0 +1,4 @@
|
|||
project(ExtFort Fortran)
|
||||
|
||||
add_library(myext a.f90)
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
MODULE externalMod
|
||||
!
|
||||
CONTAINS
|
||||
SUBROUTINE printExtModGreeting
|
||||
WRITE(*,*) "Greetings from Module externalMod"
|
||||
END SUBROUTINE
|
||||
END MODULE
|
Loading…
Reference in New Issue