我将 VS 2008 与 Intel(R) Fortran 编译器版本 10.1.025 一起使用。
为了构建我的解决方案,我使用了一个具有以下语法的批处理文件:
devenv /rebuild "Release|Win32" "c:...\solution.sln" /Project "ProjectName_InTheSolution"
使用配置“Release|Win32”,我在 VS ProjectProperties->Fortran->Proprocessor->Preprocessor Definitions 中指定值“test”。
在我的代码中,我正在测试是否定义了“测试”变量,哪个工作正常。
任何人都知道使用命令行更改 fortran 编译器的“预处理器定义”的任何方法吗?我还想在“预处理器定义”中添加值“commandLine”,因此将是“test;commandline”。
一些注意事项:
1) I have to use the devenv.exe
2) I don't want to change neither the source code or the project file prior the compilation
3) I can use environment variable to pass option (if there is any way, I try the CL but didn't work)
提前致谢
感谢您的回答,但也许我不完全理解您的解决方案,但这是我尝试过的:
1)我将“附加选项”(AO)更改为 /Dtest 并且: 1.1)如果我从 Visual Studio 或命令行编译,则检查“!DEC$ IF DEFINED (test)”为真
2)我将 AO 更改为“$(DEFINE)”并且: 2.1)从 Visual Studio 我看到警告:“命令行警告 #10161:无法识别的源类型 '$(DEFINE)';目标文件假定为 ifort”和检查“ !DEC$ IF DEFINED (test)" 为假 2.2) 我将定义变量添加到“用户环境变量”,与 2.1 相同的错误
3) 我将 AO 更改为 "/D$(DEFINE)" 我收到一个错误 "Bad syntax, '=' expected while processing '@$(define)' fortcom"
4)我将AO更改为“$(DEFINE)”并SET DEFINE = / test,也没有工作,“!DEC $ IF DEFINED(test)”为假
@cup 我想我需要更好地了解您的解决方案,如果您能给我提供有关您的解决方案的其他信息,将不胜感激。
我想要做的是:
program main
integer:: ii
!DEC$ IF DEFINED (test)
ii = 72
!DEC$ ENDIF
!DEC$ IF DEFINED (test2)
ii = 80
!DEC$ ENDIF
print *, "this is up to column ", ii
end
现在我想从命令行控制将编译哪部分代码,执行如下操作:
1) from the command line: set define=test
2) devenv elephant.sln /build
3) run debug/elephant.exe -> get "72"
4) from the command line: set define=test2
5) devenv elephant.sln /build
6) run debug/elephant.exe -> get "80"
这个有可能 ?预先感谢,瑞