Command line 使用devenv将预处理器变量传递给英特尔Fortran编译器

Command line 使用devenv将预处理器变量传递给英特尔Fortran编译器,command-line,fortran,preprocessor,devenv,intel-fortran,Command Line,Fortran,Preprocessor,Devenv,Intel Fortran,我将VS2008与英特尔(R)Fortran编译器版本10.1.025一起使用 要构建我的解决方案,我将使用具有以下语法的批处理文件: 开发/重建“Release | Win32”c:…\solution.sln“/Project“ProjectName\u解决方案” 使用配置“Release | Win32”,我在VS ProjectProperties->Fortran->Proprocessor->Preprocessor Definitions中指定值“test” 在我的代码中,我正在测

我将VS2008与英特尔(R)Fortran编译器版本10.1.025一起使用

要构建我的解决方案,我将使用具有以下语法的批处理文件:

开发/重建“Release | Win32”c:…\solution.sln“/Project“ProjectName\u解决方案”

使用配置“Release | Win32”,我在VS ProjectProperties->Fortran->Proprocessor->Preprocessor Definitions中指定值“test”

在我的代码中,我正在测试“test”变量是否是define,它是否能够正确地工作

有人知道使用命令行更改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)”为true

2) 我将AO更改为“$(定义)”,并且: 2.1)我在Visual Studio中看到警告:“命令行警告#10161:无法识别的源类型“$(定义)”;对象文件假定为ifort”,并且检查“!DEC$IF DEFINED(test)”为false 2.2)我将定义变量添加到“用户环境变量”中,与2.1中的错误相同

3) 我将AO更改为“/D$(DEFINE)”,我在处理“@$(DEFINE)”fortcom时遇到了一个错误“语法错误,=”应为“

4) 我将AO更改为“$(DEFINE)”并设置DEFINE=/test,但也不起作用,“!DEC$IF DEFINED(test)”为false

@我想我需要更好地理解你的解决方案,如果你能给我一个关于你的解决方案的额外信息,我将不胜感激

我想做的是:

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"
这是可能的吗? 提前感谢,, rui

试试这个

1) 创建以下F77程序

      program main
      integer:: ii
!                                                                       ,-- column 73
      ii = 72                                                           +8
      print *, "this is up to column ", ii
      end
2) 为上述程序创建一个解决方案,比如大象.sln

如果您只是构建并运行,它应该显示“这是第72列”

3) 弹出项目属性,在Fortran/命令行下,在附加选项框中添加$(定义)

4) 保存并退出

5) set DEFINES=/extend\u源代码:72

6) devenv elephant.sln/build

7) 运行debug/elephant.exe-您应该得到72

8) set DEFINES=/extend\u源:80

9) devenv elephant.sln/build

10) 运行debug/elephant.exe-您应该得到80

11) 如果希望添加更多/D选项,请将其粘贴在DEFINES环境变量中

基本上不使用预处理器定义-只需将您的设置转储到defines环境变量中,它将被其他选项拾取。

试试这个

1) 创建以下F77程序

      program main
      integer:: ii
!                                                                       ,-- column 73
      ii = 72                                                           +8
      print *, "this is up to column ", ii
      end
2) 为上述程序创建一个解决方案,比如大象.sln

如果您只是构建并运行,它应该显示“这是第72列”

3) 弹出项目属性,在Fortran/命令行下,在附加选项框中添加$(定义)

4) 保存并退出

5) set DEFINES=/extend\u源代码:72

6) devenv elephant.sln/build

7) 运行debug/elephant.exe-您应该得到72

8) set DEFINES=/extend\u源:80

9) devenv elephant.sln/build

10) 运行debug/elephant.exe-您应该得到80

11) 如果希望添加更多/D选项,请将其粘贴在DEFINES环境变量中

基本上不使用预处理器定义-只需将您的设置转储到defines环境变量中,它将由其他选项拾取