0

我正在尝试从此处包含 Eclipse Mosquitto 库示例 mosquitto 示例

我正在尝试使用 Makefile 来构建和编译代码。

我面临一个问题,编译器/链接器/whatsoever 找不到位于 C:\Program Files\Mosquitto\devel 的 mosquitto 库。这是错误:

mqtt-hostlink> make
gcc -Wall -o main main.c -LC:\\Program ,_,Files\\Mosquitto\\devel\mosquitto.lib
gcc: error: ,_,Files\Mosquitto\devel\mosquitto.lib: No such file or directory
make: *** [Makefile:11: make] Error 1

这是我的Makefile:

CC = gcc
null      :=
SPACE     := $(null) $(null)

LIBS = -LC:\\Program$(SPACE),_,Files\\Mosquitto\\devel\mosquitto.lib

%.o: %.c 
    $(CC) -c -o $@ $< 

make: main.c
    $(CC) -Wall -o main $^ $(LIBS)

.PHONY: clean

我提到的“空格”方法:如何在 Makefile 中转义空格

4

2 回答 2

1

这里有些混乱。那篇文章是关于如何从 make 函数中转义空格。您没有尝试在这里调用任何 make 函数,您只是尝试在命令行中使用变量。没有必要逃避任何东西。

您需要做的是从 shell 中转义空格,而不是从 make 中转义。你可以很容易地做到这一点,只需使用引号。无需花哨的制作操作。我建议您也使用正斜杠,而不是反斜杠。几乎所有 Windows 程序都接受正斜杠和反斜杠。只有cmd.exe内置插件没有。

LIBS = "-LC:/Program Files/Mosquitto/devel/mosquitto.lib"
于 2021-10-11T14:39:52.887 回答
1

您可以只使用 tar 目录的简称。列出带有 /X 选项的目录,如下所示

C:\>dir /X p*


 Directory of C:\

09/06/2021  02:24 PM    <DIR>          PROGRA~1     Program Files
09/06/2021  01:29 PM    <DIR>          PROGRA~2     Program Files (x86)
               0 File(s)              0 bytes

然后只需使用PROGRA~1而不是Program Files

于 2021-10-11T10:52:54.737 回答