Explorar o código

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.
Bill Hoffman %!s(int64=14) %!d(string=hai) anos
pai
achega
48a09f82cc

+ 2 - 2
Modules/CMakeAddFortranSubdirectory.cmake

@@ -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"

+ 2 - 17
Tests/VSGNUFortran/CMakeLists.txt

@@ -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

+ 15 - 0
Tests/VSGNUFortran/subdir/CMakeLists.txt

@@ -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
+   )

+ 0 - 0
Tests/VSGNUFortran/fortran/CMakeLists.txt → Tests/VSGNUFortran/subdir/fortran/CMakeLists.txt


+ 0 - 0
Tests/VSGNUFortran/fortran/hello.f → Tests/VSGNUFortran/subdir/fortran/hello.f


+ 0 - 0
Tests/VSGNUFortran/fortran/world.f → Tests/VSGNUFortran/subdir/fortran/world.f