Thanks Brad,
I looked at the documentation for gfortran and it says (before asking
about my problem, I also read the CMake documentation but failed to
comprehend it properly)
|-isystem|dir
Searchdirfor header files, after all directories specified by-Ibut
before the standard system directories. Mark it as a system
directory, so that it gets the same special treatment as is applied
to the standard system directories. Ifdirbegins with|=|, then
the|=|will be replaced by the sysroot prefix; see--sysrootand-isysroot.
and
|-I|dir
These affect interpretation of the|INCLUDE|directive (as well as of
the|#include|directive of thecpppreprocessor).
Also note that the general behavior of-Iand|INCLUDE|is pretty much
the same as of-Iwith|#include|in thecpppreprocessor, with regard to
looking forheader.gccfiles and other such things.
This path is also used to search for.modfiles when previously
compiled modules are required by a|USE|statement.
SeeOptions for Directory Search
<https://gcc.gnu.org/onlinedocs/gcc-4.4.4/gcc/Directory-Options.html#Directory-Options>,
for information on the-Ioption.
I guess their documentation should be more explicit and say that
-isystem dirs are not searched for .mod files. The documentation as it
stands implies to me that -isystem is the same as -I but for ordering.
Again thanks,
Hugh.
On 03/27/15 02:35, Brad King wrote:
On 03/25/2015 08:26 PM, Hugh Sorby wrote:
|-- ex
| |-- CMakeLists.txt
| `-- use_mod.f90
|-- ex-build
|-- install
|-- modsrc
| |-- CMakeLists.txt
| `-- a.f90
`-- modsrc-build
Thanks for the detailed example. It was trivial to reproduce the
issue with that!
Since this commit:
Always consider includes from IMPORTED targets to be SYSTEM.
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a63fcbcb
which was first included in CMake 3.0, include directories taken
from imported targets are treated as SYSTEM automatically. You
can avoid it with a target property on the imported target:
http://www.cmake.org/cmake/help/v3.2/prop_tgt/NO_SYSTEM_FROM_IMPORTED.html
Doing that will workaround the problem. I think the real issue
is that we cannot reliably use -isystem with gfortran at all
because it won't look in such paths for module files. I've
fixed that here:
GNU: Do not use -isystem with gfortran
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a8e7a104
Thanks,
-Brad
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake