Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何在Windows上从批处理脚本运行cmake命令时将其他目录引用到cmake_Batch File_Cmake_Windows 10_Git Bash - Fatal编程技术网

Batch file 如何在Windows上从批处理脚本运行cmake命令时将其他目录引用到cmake

Batch file 如何在Windows上从批处理脚本运行cmake命令时将其他目录引用到cmake,batch-file,cmake,windows-10,git-bash,Batch File,Cmake,Windows 10,Git Bash,我来自Linux Unix背景,我正在尝试将一个非常简单的.sh转换为.bat脚本 我想在Windows 10上的批处理文件中运行cmake命令。但是我想在源代码目录之外的构建目录中运行cmake命令。源代码目录就在build文件夹旁边 ::build_something.bat mkdir build CD build cmake ../SourceCodeDir 正如您在上面所看到的,我希望生成build/目录中的所有构建文件 但问题是cmake反而错误地试图在build/中找到So

我来自Linux Unix背景,我正在尝试将一个非常简单的
.sh
转换为
.bat
脚本

我想在Windows 10上的批处理文件中运行
cmake
命令。但是我想在源代码目录之外的构建目录中运行
cmake
命令。源代码目录就在
build
文件夹旁边

::build_something.bat

mkdir build 
CD build

cmake ../SourceCodeDir
正如您在上面所看到的,我希望生成
build/
目录中的所有构建文件


但问题是
cmake
反而错误地试图在
build/
中找到
SourceCodeDir
目录,抱怨
build/SourceCodeDir
不存在。这表明我在批处理脚本中执行了错误的目录导航。如何在批处理脚本上将基于Unix的文件夹导航修改为基于Windows的文件夹导航

以下是cmake声明的精确错误

CMake Error: The source directory "C:/code/build/SourceCodeDir" does not exist.
PS:
我正在从git bash shell运行批处理脚本。

我知道目录路径中的斜杠是基于Linux的,但这不应该是一个问题,因为我是从git bash运行它的?或者这是bat脚本中的问题之一?

即使我用反斜杠替换路径分隔符,也没有帮助。Windows是否理解符号
。\SourceCodeDir
表示引用当前目录之外的目录?可能不是,这也是一个问题?您应该使用CMake配置步骤的
-S
(源目录)和
-B
(构建目录)选项。如果不存在,则创建生成目录。然后,您的CMake调用将读取
CMake-B build-S../SourceCodeDir
,对于Windows平台,然后可以使用
CMake--build build--target ALL_build--config Release
“运行构建步骤,但问题是,
CMake
而不是错误尝试…”不要描述错误消息,而是按原样准确显示它。如果您能正确理解CMake(或shell)告诉您的内容,那么您就可以自己轻松地解决问题。既然你在问,那么这条消息中的某些内容对你来说是不清楚的。我用cmakes抛出的确切错误更新了这个问题。错误清楚地表明它正试图在
build
文件夹中查找
SourceCodeDir
。@vre感谢使用
-S
选项的提示,但使用-S选项也会遇到与我的问题相同的问题。