gpt4 book ai didi

windows - Windows 中的 $(shell [foo])

转载 作者:可可西里 更新时间:2023-11-01 11:54:38 25 4
gpt4 key购买 nike

我有一个 makefile(一个名为“Makefile”的文件,它在 Linux 中由 cmake 运行,但我相信在 Windows 中可以通过 nmake 运行,并且需要在 VS 命令提示符下运行。)

我能看到的大多数“样本”都只是一行(其余的似乎是我“还”不理解的东西,然后是同一行。

include $(shell rospack find mk)/cmake.mk

(在终端 rospack find [package] 返回所述包的路径,而 cmake.mk 显然是它要包含的文件)

我的问题是,这似乎(至少对我而言)是为在 Linux 系统中使用而编写的(基本上是整个 ros,我正在使用的程序),而在 Windows 中这似乎只是努力成为

include /cmake.mk

(这毫无疑问是行不通的)

基本上我需要知道如何在 Windows 中做同样的事情,通常以“动态”方式,因为如果我通过硬编码目录路径然后它来实现它只会导致更多问题因为它在未来某个时间没有正确设置而中断)

所以我想如果这不可能或特别困难,硬编码的方法将是权宜之计。

我试过:

include C:\[directory]\cmake.mk

但是':'似乎有问题

我正在尝试使用 Windows,因为稍后在我的项目中我将需要使用我们仅支持 Windows 的另一个程序(用于 i90 机器人)。

好吧,如果文件确实在文件夹中,显然它的行为会有所不同。如

include C:\[directory]\cmake.mk

错误

C:\[directory]\cmake.mk not found

如果文件不存在,并且

fatal error U1034: syntax error : separator missing

如果是

虽然这似乎并没有真正影响到原始问题,但我想这表明我正在尝试做一些时髦的 Windows 不喜欢的事情。

最佳答案

简短的回答是,您永远不会得到一个 makefile 来做很多复杂的事情,既可以与标准 UNIX 风格的 make(例如来自 GNU/Linux 的 GNU make)一起工作,也可以与 nmake 一起工作。 Nmake 是完全不同的野兽。

顺便说一句,您的 makefile 在这里被称为“cmake”,这令人困惑,因为 cmake 是一个实际的程序,不同于 make(和 nmake)。不过,我假设从上下文来看,此处使用的术语“cmake”并不是指实际的 cmake 实用程序。这太糟糕了,因为如果它确实使用 cmake,事情对你来说会更简单。也许吧。

不过,尚不清楚您使用 nmake 的确切要求是什么。如果您列出了您的真实需求,我们将更容易为您提供建议。例如,您说您需要使用仅在 Windows 上运行的“另一个程序”。这个程序到底是做什么的,你需要如何使用它?是否提供需要与“ros”代码链接的库?

基本上,最简单的方法是为您的 Windows 系统获取类​​ UNIX 环境,包括 GNU make 等工具。有两个主要选择:Cygwin,它提供了一个完整的 POSIX 基础设施,包括 shell、编译器等,它们是 GNU 环境到 Windows 的端口,但需要一个 POSIX 层,以及 MinGW,它有各种或多或少本地运行的 GNU 工具在 Windows 上。

但是,例如,如果您必须使用 Visual Studio 作为编译器,那么集成起来就会困难得多。

关于windows - Windows 中的 $(shell [foo]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20529489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com