【问题标题】:NMake .PHONY not compilingNMake .PHONY 未编译
【发布时间】:2021-12-10 09:29:23
【问题描述】:

我在尝试为我的树莓派 pico 编译简单的 C 代码时遇到问题。 我正在使用 VSCode(这在 PS 中也可以重现)。据我所知,我已经正确设置了所有内容。

我曾尝试仅在 PS 中执行此操作,结果完全相同。

CMakeLists.txt

cmake_minimum_required(VERSION 3.19)

include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)

project(blink C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

pico_sdk_init()

add_executable(${PROJECT_NAME}
    main.c
)

pico_add_extra_outputs(${PROJECT_NAME})

target_link_libraries(${PROJECT_NAME}
    pico_stdlib
)

Main.c

#include <pico/stdlib.h>

int main()
{
    const uint led_pin = 25;

    //init ledpin
    gpio_init(led_pin);
    gpio_set_dir(led_pin, GPIO_OUT);

    while(true)
    {
        //blink led
        gpio_put(led_pin, true);
        sleep_ms(1000);
        gpio_put(led_pin, false);
        sleep_ms(1000);
    }
}

当使用 nmake 编译时。吐出来,

[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --build c:/pico/Projects/Blink/build --config Release --target blink -j 6 --
[build] Warning: NMake does not support parallel builds. Ignoring parallel build command line option.
[build] makefile(7): Error(E21): Extension(s) (.PHONY) not defined
[build] makefile(10): Error(E21): Extension(s) (.NOTPARALLEL) not defined
[build] makefile(12): Error(E09): Ignoring out of place Extension
[build] makefile(14): Error(E21): Extension(s) (.PHONY) not defined
[build] makefile(28): Warning(W18): Unrecognized or out of place character '='
[build] makefile(31): Error(E09): Ignoring out of place Single-colon
[build] makefile(36): Error(E21): Extension(s) (.PHONY) not defined
...
[build] Error(E02): Make execution terminated
[build] Build finished with exit code 0

我无法找到太多关于如何解决这个确切问题的信息,这让我感到惊讶。我发现的唯一一件事是 nmake 不使用“.PHONY”,这就是我的大部分问题的来源。

我是否只删除 Makefile 中的所有“.PHONY”引用?我希望有人可以帮助解决这个非常令人困惑的问题。

谢谢。

【问题讨论】:

  • 免责声明:我没有nmake 曝光,但make 的味道我想nmake 在这方面与gmake 或您的cmake 生成的Makefile 不同假定。您可能想查看cmake-G 标志并确保使用适合用例的生成器...即NMake Makefiles?
  • 您提交了CMakeLists.txt。您实际上是在构建过程中使用 CMake 吗?因为在 CMake 构建中,makefile 将通过 cmake 命令生成,如果这不适合您的环境,则可能没有正确调用 cmake
  • 我用来生成 makefile 的 Cmake 命令是 "CMake -G "NMake Makefiles" .." 然后我尝试使用命令 "nmake" 进行编译

标签: c cmake makefile nmake raspberry-pi-pico


【解决方案1】:

我终于解决了这个问题。

我的计算机上安装了第 3 方 nmake “Open Watcom C/C++”。

这是在创建一个“WMake Makefiles”,显然不是“NMake Makefiles”。

如果您遇到此问题,请仔细阅读您的 NMake 输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多