代码之家  ›  专栏  ›  技术社区  ›  Szczepan

传递带有原子中空格的arg。atom构建。yml公司

  •  0
  • Szczepan  · 技术社区  · 7 年前

    Atom Build package 使用 .atom-build.yml 文件来指定项目构建目标,所以我创建了简单的 .atom构建。yml公司 以满足我的需要。除了一个小部件外,一切正常。在其背景下:

    targets:
        Run CMake for Windows:
            cmd: "cmake"
            atomCommandName: "Create Makefiles with CMake"
            args:
                - "-Bbuild"
                - "-H."
                - "-G\"MinGW Makefiles\""
    

    在这个特定的目标中,我希望 cmake Build CMake 不起作用,或者我不知道如何使用它。使用时,生成包将运行 cmd /C 运行之后写入的命令 cmd: 带参数 args: . 因此,Atom中显示的调用是:

    cmd /C cmake -Bbuild -H. -G"MinGW Makefiles"
    

    具有 -G 选项I定义目标 make 环境,即 NMake Makefiles 默认情况下,我希望 MinGW Makefiles . 运行上述目标后, 抛出错误:

    CMake Error: Could not create named generator "MinGW
    

    ... 并列出所有可用的生成器。显然,空间 制造 Makefiles 被理解为下一个论点。我试着用 \ ^ ,但它不起作用。此外,我尝试将args移动到 cmd 字段,因为它将从单个命令行调用运行。

    我的问题是: 如何运行 cmake公司 使用带有 -G 选项传递给 cmake公司 正确地


    编辑:

    具有 '-G "MinGW Makefiles"' 错误仍然存在。

    具有 "-G ""MinGW Makefiles""" Atom抛出错误:

    bad indentation of a sequence entry at line 15, column 19:
                    - "-G""MinGW Makefiles"""
                          ^
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Dharman Aman Gojariya    3 年前

    我在搜索类似问题的解决方案时偶然发现了你的帖子。我试图将makefile目标添加为命令。经过多次尝试,我终于成功了。

    cmd: "C:/WinAVR-20100110/utils/bin/make.exe all"
    name: all
    
    errorMatch:
      - (?<file>[0-9a-zA-Z_]+\\.+[cC]):(?<line>\\d+):\\s+(?<message>.+)
    targets:
        build all:
            cmd: "C:/WinAVR-20100110/utils/bin/make.exe all"
        clean and rebuild:
            cmd: "C:/WinAVR-20100110/utils/bin/make.exe rebuild"
        clear artifacts:
            cmd: "C:/WinAVR-20100110/utils/bin/make.exe clean"
    

    这里的想法是将参数作为命令本身的一部分传递,而不是作为单独的参数传递。

        2
  •  0
  •   Szczepan    7 年前

    我找到了其他跑步方式 cmake 参数同上。我创建了 PreLoad.cmake 文件,包括:

    set (CMAKE_MAKE_PROGRAM "C:/Program\ Files\ (x86)/GnuWin32/bin/make.exe" CACHE INTERNAL "" FORCE)
    set (CMAKE_GENERATOR "MinGW Makefiles" CACHE INTERNAL "" FORCE)
    set (EXECUTABLE_OUTPUT_PATH "build" CACHE INTERNAL "" FORCE)
    

    此文件由 cmake公司 在CMakeLists之前。txt,因此它会覆盖默认值 cmake公司 设置。其次,我修改了 .atom-build.yml :

    cmd: "g++"
    atomCommandName: "Compile and run with g++"
    name: "Compile and run single file C++ project"
    args:
        - "{FILE_ACTIVE}"
        - "-o {FILE_ACTIVE_PATH}/application.exe &&"
        - "{FILE_ACTIVE_PATH}/application.exe"
    targets:
        Run CMake:
            cmd: "cmake ."
            atomCommandName: "Create Makefiles with CMake"
        Build Makefile project:
            atomCommandName: "Make all"
            cmd: "make"
            args:
                - "-j4"
                - "all"
        Run application:
            atomCommandName: "Run application"
            cmd: "{FILE_ACTIVE_PATH}/build/application.exe"
        Full CMake build:
            atomCommandName: "Full CMake build"
            cmd: "cmake . && make -j4 all && {FILE_ACTIVE_PATH}/build/application.exe"
    

    作品 几乎 完美-Atom构建包不支持输入。


    正在运行:

    cmd /C cmake -Bbuild -H. -G"MinGW Makefiles" -DCMAKE_MAKE_PROGRAM=make
    

    直接从命令提示符(或不使用 cmd /C ),有效。然而,从Atom我得到:

    The system cannot find the path specified.
    

    这就是 cmd 错误我不知道为什么它会持续下去。