'cmake'未被识别为内部或外部命令

hfyxw5xn  于 2022-11-11  发布在  其他
关注(0)|答案(9)|浏览(1032)

我正在Visual Studio 10中运行cmake,以获得esys-particle-win。
我的cmake之路:C:\Program Files (x86)\CMake 2.8\bin\cmake.exe
我的esys-particle-win之路:C:\esys-particle-win\trunk\buildvs2010\mkvs10.bat
我在Visual Studio 2010的管理员命令提示符中键入的命令是:

cd c:\esys-particle-win\trunk\buildvs2010
mkvs10.bat

我得到了这个错误:

'cmake' is not recognized as an internal or external command

mkvs10.bat的含量:

cmake .. -G "Visual Studio 10" -G "NMake Makefiles"

有人能告诉我我错在哪里吗?我不懂电脑编程。我按照本网站第2.3.1节中提到的说明操作:`
https://launchpadlibrarian.net/139659869/esys-particle-win-%28v2.1%29-build-instructions.pdf
'如有任何帮助,我将不胜感激,谢谢。

hpxqektj

hpxqektj1#

该错误消息表示无法找到cmake。
您可以在提示符下将其位置添加到路径中,如下所示:

set PATH="C:\Program Files (x86)\CMake 2.8\bin\";%PATH%
hsvhsicv

hsvhsicv2#

正如上面提到的**@doctorlove**,错误消息意味着它找不到Cmake。
请注意,在Windows上,PATH环境变量中不需要引号。因此,在Windows上,上面的示例看起来如下所示:

set PATH=C:\Program Files (x86)\CMake 2.8\bin\;%PATH%

我遇到了同样的问题,and resolved it in this post.

uyhoqukh

uyhoqukh3#

请注意,如果您通过chocolatey安装了cmake,您可能忽略了添加参数--installargs 'ADD_CMAKE_TO_PATH=System'。如果您已经通过choco安装了不带该参数的cmake,则通过--force重新安装时将不会考虑新参数:你需要卸载然后安装。特别是choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'

j2datikz

j2datikz4#

自从我在D:\Program Files中安装了CMake后,我也遇到了同样的问题,我通过手动添加一个路径变量来修复它。
1.打开控制面板
1.转至“系统和安全”,然后转至“系统”。How it looks like in after step 2
1.在此选择高级系统设置,将出现一个对话框。The dialogue box
1.现在转到“环境变量”。
1.现在选择路径,然后单击编辑After the 4th Step
1.在这里添加一个新的路径在底部的许多预先存在的路径。
1.在我的例子中,我在D:\Program Files\中安装了CMake
1.因此,我需要添加路径D:\Program Files\CMake\bin。您应该将该路径复制到您的CMake文件夹中,并在末尾添加\bin
1.现在打开您必须重新启动命令提示符才能看到更改。

rqqzpn5f

rqqzpn5f5#

我发现CMake是:

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin

我把它添加到用户路径中,就像上面描述的那样,由hrithik singla,并且node-gyp工作了,特别是"npm install"。我希望它在将来会再次改变。所以我找到它的方法是让Windows资源管理器搜索"C:\Program Files (x86)\Microsoft Visual Studio\2019",然后在结果中挖掘CMake路径。可能,其他开发工具会把CMake安装到不同的文件夹中。

disbfnqx

disbfnqx6#

我试图用我最近下载的Visual Studio Community 2017构建一个项目,但我的路径上没有CMake。
即使在我获得了VCVars之后,它也没有帮助:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
我没有单独安装一个可以使用这些答案的副本,尽管我不确定它是否有我需要的生成器(?),我在安装目录中找到了一个生成器,它的路径与我正在使用的指南中的路径不同。
下面是我的调用行:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -G "Visual Studio 15 2017" -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ..

3mpgtkmj

3mpgtkmj7#

步骤0:安装CMAKE
确保在Windows上安装了CMAKE:
https://cmake.org/download/
安装程序将询问您是否希望它自动为您设置PATH变量。

ryoqjall

ryoqjall8#

有几个问题会导致这个问题。而且大多数是与windows相关的。这是更多关于cmake方面的东西,但是它解决了一些windows特定的问题,你可能会遇到与Windows一起使用CMake。这是我刚想到的,并且弹出了这个,所以我就把它放在这里。我们开始吧。

1.如果路径中有空格,CMake将分隔要列出的变量。

如果您正在从CMake中调用CMake的另一个示例,发送程序文件路径将对这些字符串进行切片,并将您的变量分成3个项目的列表。空格将被分号分隔符替换。

set(CMAKE_EXE C:\Program Files (x86)\CMake\bin\cmake.exe)

"C:\Program;Files;(x86)\CMake\bin\cmake.exe  <- CMAKE_EXE is now a 3 item list separated by ; "

    list(LENGTH ${CMAKE_EXE} count)
    message("CMAKE_EXE has ${count} items") "-> displays 3"

在Windows上,所有的路径变量都应该用引号括起来,以推断它们是一个单一的字符串变量。不仅仅是对于cmake,而且对于批处理脚本,基本命令行等等。

set(CMAKE_EXE "C:/Program Files (x86)/CMake/bin/cmake.exe")

现在,每当你引用CMAKE_EXE时,你都需要把它放在引号中,因为cmake会把它再次分解成一个列表。

execute_command(COMMAND cmd /c ${CMAKE_EXE} -P myScript.cmake)  <-- BAD
   execute_command(COMMAND cmd /c "${CMAKE_EXE}" -P myScript.cmake) <- GOOD

只要养成习惯,总是在你引用的路径周围加上引号。

2.远离Windows反斜杠!.

默认情况下,Windows使用反斜杠作为路径分隔符,在大多数编码语言(包括CMake)中,反斜杠是转义序列。只需发送windows /正斜杠即可。这消除了在字符串文字中使用两个转义字符来匹配路径的麻烦。
请记住,windows总是试图以\格式给予你路径。Windows喜欢在某些地方使用反斜杠,比如环境路径和设置文件,而cmake喜欢正斜杠。你需要在不同的格式之间进行转换。使用类似这样的方法来转换路径,使其更好地跨平台兼容。你可以在现有变量上替换“in place”。

"CMAKE_EXE = C:\Program Files (x86)\CMake\bin\cmake.exe <- value before"

string(REPLACE "\\" "/" CMAKE_EXE "${CMAKE_EXE}")   "<- notice the quotes again"

"CMAKE_EXE = C:/Program Files (x86)/CMake/bin/cmake.exe <- value after"

请看一下这些设计用于进行路径转换的CMake函数。https://cmake.org/cmake/help/latest/command/file.html#to-native-path

3.有时,Windows会将不带引号的路径解释为8.3SFN(8DOT 3)格式

8.3 filename在MSDOS和Windows 95的时代,我们处理FAT文件系统和8.3短文件名。命令提示符不能处理超过8个字符的文件名,所以我们需要一种方法来访问长的Windows文件名,然后才能支持引号字符串。8个字符+ 3个扩展名。今天大多数系统仍然支持8.3。下面是一个例子。

C:\Program Files\Windows\System32\Calc.exe    <- \Program Files\ is 13 characters

为了不带引号地进入这个路径,你必须使用短路径。

CD C:\Progra~1\Windows\System32\Calc.exe  <-- *Progra~1 is 8 characters, 1st occurrence.*

您只需将文件或文件夹名称细分为6个字符,再加上~n(n=出现次数)
如果我们有一个 C:\Program Files(x86) 路径,那么,就像我们今天所做的那样,它将是第二个前6个字符匹配的路径,并且都超过了8个字符。

C:\Program Files           becomes ->  C:\Progra~1\
C:\Program Files (x86)     becomes ->  C:\Progra~2\
C:\MyLongFilename.txt      becomes ->  C:\MyLong~1\

每当我在通过无法发送转义序列或引号的软件访问完整长度的文件系统时遇到麻烦,或者其他一些限制,我不得不求助于使用8.3短文件名来访问某些路径。在一些Windows设备上,引号甚至不起作用,并且在主机上启用它们将是一个很长的过程。这是一个很好的解决方案。
获取短路径(通过发送到命令提示符)

C:\ for %A in ("C:\Program Files (x86)\CMake\bin\cmake.exe") do @echo %~sA

我将生成C:\Progra~1供您使用
或者,通过将路径作为参数发送到批处理文件来获取短路径。

::getShortPath.bat
@ECHO OFF
echo %~s1

用途:-〉getShortPath.bat "C:\Program Files (x86)\CMake\bin\cmake.exe"
总结一下,这里有三个例子,说明当窗口路径无法解析时,CMake后面的后台可能会发生什么。
在路径

周围不使用引号


使用引号是有效的。但是有时候如果stdio〉〉运行了不止一个进程,你可能会丢失引号。在这种情况下,你需要将它们作为转义序列"\"C:/Program Files (x86)/CMake/bin/cmake.exe\""发送

**4.路径和命令列参数必须是彼此独立的变数或执行严修。**从CMake传送参数时,您必须要将它们与路径变数分开。Set(CMAKE_EXE“C:\Program Files(x86)\CMake\bin\cmake.exe --version”)将无法运作。只有含有空格的路径和参数才需要括在引号中。

设置(CMAKE_EXE“C:\程序文件(x86)\CMake\bin\cmake.exe”--版本--跟踪“C:\我的源目录”)

将所有信息整合在一起
如果有人像我一样在Windows/CMake路径上遇到问题,请仔细研究这段代码,直到完全理解它。所有的引用位置。当你理解什么被引用,什么没有被引用,以及为什么,从长远来看,这应该会有很大的帮助。

set(CMAKE_EXE "C:\Program Files (x86)\CMake\cmake.exe" CACHE INTERNAL "") <- make it a global variable.

set(ARGUMENTS --version --trace)
set(MyStringWithQuotesIncluded "\"This String wants it's quotes included\"")
set(MyCMakeLists "C:\MyApp\ProjectDirectory")
set(BuildHere "C:\MyBuilds\MyOSProject\bin")

set(FULL_COMMAND "${CMAKE_EXE}" ${ARGUMENTS} -DSTRING_VARIABLE="${MyStringWithQuotesIncluded}" -S "${MyCMakeLists}" -B "${BuildHere}")

execute_command(COMMAND cmd /c ${FULL_COMMAND} WORKING_DIRECTORY "${BuildHere}")

当我刚开始的时候,我在通过CMake层使用Windows路径时遇到了很多问题。我希望这能帮助人们在未来避免所有这些问题。

2hh7jdfx

2hh7jdfx9#

将路径设置为C:\Program Files\CMake\bin

相关问题