在 Intel Visual Fortran 中获取解决方案目录

Get Solution Directory in Intel Visual Fortran

在 Intel Visual Fortran 项目中有没有办法获取表示 Visual Studio 解决方案目录的字符串?

Get_Environment_Variable据我所知好像没有那个能力

英特尔 Fortran 2017 和 VS 2015。

在英特尔 Fortran 项目的 属性 页面中,您可以使用 $(SolutionDir) 宏来查询解决方案目录。

有多种方法可以在编译时将此宏的值合并到 Fortran 源代码中(例如,在编译器命令行上定义预处理器符号,然后在源代码中引用该预处理器符号),或者通过该宏的值到程序的运行时实例(例如,通过命令行参数,通过相关项目指定 属性)当程序从 Visual Studio.

根据您的其他评论,在我看来您可能对包含可执行文件的目录更感兴趣。如果您知道您的解决方案目录结构,您可以从中计算出解决方案位置。

分两步完成。首先调用 Windows API 例程 GetModuleHandle, passing NULL as the argument. This returns a handle to the current executable. Then you pass this handle to GetModuleFileName 其中 returns 可执行文件的路径作为 NUL-terminated 字符串。

如果您只想分离出路径,可以使用 Intel 库例程 SPLITPATHQQ

示例:

program whereami
use kernel32
use, intrinsic :: ISO_C_BINDING
implicit none

integer(HANDLE) :: h
character(MAX_PATH) :: f
integer(DWORD) :: ret


h = GetModuleHandle (NULL)
ret = GetModuleFileName (h,f,len(f))
print *, f(1:index(f,C_NULL_CHAR)-1)
end program whereami