CMakeAddFortranSubdirectory: Make IMPORTED targets GLOBAL
cmake_add_fortran_directory uses imported targets when using the mingw fortran compiler. This change makes those targets global in scope so they act just like the real targets that exist when a fortran compiler exists and regular add_subdirectory is used.
This commit is contained in:
parent
067c1f44a8
commit
48a09f82cc
|
@ -25,7 +25,7 @@
|
|||
# function is invoked.
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2011 Kitware, Inc.
|
||||
# Copyright 2011-2012 Kitware, Inc.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
|
@ -151,7 +151,7 @@ function(cmake_add_fortran_subdirectory subdir)
|
|||
)
|
||||
# create imported targets for all libraries
|
||||
foreach(lib ${libraries})
|
||||
add_library(${lib} SHARED IMPORTED)
|
||||
add_library(${lib} SHARED IMPORTED GLOBAL)
|
||||
set_property(TARGET ${lib} APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
|
||||
set_target_properties(${lib} PROPERTIES
|
||||
IMPORTED_IMPLIB_NOCONFIG "${library_dir}/lib${lib}.lib"
|
||||
|
|
|
@ -17,23 +17,8 @@ if(CMAKE_CONFIGURATION_TYPES)
|
|||
endforeach()
|
||||
endif()
|
||||
|
||||
include(CMakeAddFortranSubdirectory)
|
||||
# add the fortran subdirectory as a fortran project
|
||||
# the subdir is fortran, the project is FortranHello
|
||||
cmake_add_fortran_subdirectory(fortran
|
||||
PROJECT FortranHello # project name in toplevel CMakeLists.txt
|
||||
ARCHIVE_DIR ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
|
||||
RUNTIME_DIR bin # ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
LIBRARIES hello world # target libraries created
|
||||
CMAKE_COMMAND_LINE
|
||||
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
|
||||
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
LINK_LIBRARIES # link interface libraries
|
||||
LINK_LIBS hello world # hello needs world to link
|
||||
)
|
||||
|
||||
include_directories(${VSGNUFortran_BINARY_DIR}/fortran)
|
||||
add_subdirectory(subdir)
|
||||
include_directories(${VSGNUFortran_BINARY_DIR}/subdir/fortran)
|
||||
add_subdirectory(c_code)
|
||||
# use a cmake script to run the executable so that PATH
|
||||
# can be set with the MinGW/bin in it, and the fortran
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
include(CMakeAddFortranSubdirectory)
|
||||
# add the fortran subdirectory as a fortran project
|
||||
# the subdir is fortran, the project is FortranHello
|
||||
cmake_add_fortran_subdirectory(fortran
|
||||
PROJECT FortranHello # project name in toplevel CMakeLists.txt
|
||||
ARCHIVE_DIR ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
|
||||
RUNTIME_DIR bin # ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
LIBRARIES hello world # target libraries created
|
||||
CMAKE_COMMAND_LINE
|
||||
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
|
||||
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
LINK_LIBRARIES # link interface libraries
|
||||
LINK_LIBS hello world # hello needs world to link
|
||||
)
|
Loading…
Reference in New Issue