VS: Support Intel Fortran 15 .vfproj generation (#15175)
This version of the Intel Fortran plugin to Visual Studio says: please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile) We must set TargetName and TargetExt in addition to the existing setting for OutputDirectory. The settings do not appear to hurt older versions of Intel Fortran, so set them unconditionally. Extend the FortranOnly test to cover a corresponding use case by using the OUTPUT_NAME target property. Inspired-by: Ian Harvey <Ian.Harvey@megms.com.au>
This commit is contained in:
parent
a22570ea19
commit
a128129a86
|
@ -796,6 +796,20 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
|
|||
<< "\t\t\tUseOfMFC=\"" << mfcFlag << "\"\n"
|
||||
<< "\t\t\tATLMinimizesCRunTimeLibraryUsage=\"false\"\n";
|
||||
|
||||
if (this->FortranProject)
|
||||
{
|
||||
// Intel Fortran >= 15.0 uses TargetName property.
|
||||
std::string targetNameFull = target.GetFullName(configName);
|
||||
std::string targetName =
|
||||
cmSystemTools::GetFilenameWithoutLastExtension(targetNameFull);
|
||||
std::string targetExt =
|
||||
cmSystemTools::GetFilenameLastExtension(targetNameFull);
|
||||
fout <<
|
||||
"\t\t\tTargetName=\"" << this->EscapeForXML(targetName) << "\"\n"
|
||||
"\t\t\tTargetExt=\"" << this->EscapeForXML(targetExt) << "\"\n"
|
||||
;
|
||||
}
|
||||
|
||||
// If unicode is enabled change the character set to unicode, if not
|
||||
// then default to MBCS.
|
||||
if(targetOptions.UsingUnicode())
|
||||
|
|
|
@ -8,13 +8,14 @@ set_property(TARGET FortranOnlylib PROPERTY Fortran_FORMAT FIXED)
|
|||
set_property(SOURCE world.f PROPERTY Fortran_FORMAT FREE)
|
||||
|
||||
# create an executable that calls hello and world
|
||||
add_executable(FortranOnly testf.f)
|
||||
target_link_libraries(FortranOnly FortranOnlylib)
|
||||
add_executable(FortranOnly1 testf.f)
|
||||
set_property(TARGET FortranOnly1 PROPERTY OUTPUT_NAME FortranOnly)
|
||||
target_link_libraries(FortranOnly1 FortranOnlylib)
|
||||
|
||||
# create a custom command that runs FortranOnly and puts
|
||||
# create a custom command that runs FortranOnly1 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
|
||||
COMMAND FortranOnly1
|
||||
> testfhello.txt)
|
||||
# create a second executable FortranOnly2 that has
|
||||
# testfhello.txt has an source file so that it will
|
||||
|
@ -27,15 +28,15 @@ add_custom_target(checktestf2 ALL
|
|||
COMMAND ${CMAKE_COMMAND}
|
||||
-P ${FortranOnly_SOURCE_DIR}/checktestf2.cmake)
|
||||
|
||||
# create a custom target that runs FortranOnly exectuable and creates
|
||||
# create a custom target that runs FortranOnly1 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
|
||||
COMMAND FortranOnly1 > out.txt
|
||||
)
|
||||
# make sure stuff is built in the right order
|
||||
add_dependencies(checktestf2 FortranOnly2)
|
||||
add_dependencies(sayhello FortranOnly)
|
||||
add_dependencies(FortranOnly2 FortranOnly)
|
||||
add_dependencies(sayhello FortranOnly1)
|
||||
add_dependencies(FortranOnly2 FortranOnly1)
|
||||
|
||||
# add a custom target that checkes that out.txt has the correct
|
||||
# content
|
||||
|
|
Loading…
Reference in New Issue