【问题标题】:Script for Notepad++ NppExec for C++ in ubuntuubuntu 中 C++ 的 Notepad++ NppExec 脚本
【发布时间】:2021-03-28 20:35:34
【问题描述】:

我刚切换到 ubuntu,我想为 CPP 设置 notepad++。

所以我使用NppExec插件在notepad++中编译,

我的脚本是:

npp_save
g++ "$(FULL_CURRENT_PATH)" -o "$(CURRENT_DIRECTORY)\$(NAME_PART)obj"
./"$(NAME_PART)obj"

这里我使用的“obj”只是用“obj”关键字保存文件。

最后一行./"$(NAME_PART)obj"是运行程序。

但它看起来在 ubuntu 中不起作用,它会产生这个错误:

NPP_SAVE: Z:\home\username\cpp\test.cpp
g++ "Z:\home\username\cpp\test.cpp" -o "Z:\home\username\cpp\testobj"
; about to start a child process: "g++ "Z:\home\username\cpp\test.cpp" -o "Z:\home\username\cpp\testobj"
CreatProcess() failed with error code 2:
File not found.

./"testobj"
; about to start a child process: "./"testobj""
CreatProcess() failed with error code 2:
File not found.

我调查了一些我认为是问题的地方,所以我认为是/\ 在更改目录时的用法。

我不知道如何解决这个问题,所以我不能确定。

有什么想法吗? :) 我在同一台机器上使用 vim btw,它运行良好。

【问题讨论】:

  • 您可以尝试删除"。在linux中没用,文件名中没有空格
  • 你的路径上有 g++ 吗?
  • @Damien 您绝对可以在 Linux 上的文件名中包含空格,并且可以将它们用引号括起来以防止错误
  • @AlanBirtles 我一直读到不建议在 linux 文件名中使用空格。这并不意味着根本不允许这样做。几十年来,我一直在 Linux 和 Windows 之间交换文件,在解决未解决的问题后,我很久以前就决定避免使用空格。我什至在 Windows 中遇到了问题!也许最近的 linux 系统更有弹性。
  • @Damien 他们在 Windows 上造成的问题不会多或少

标签: c++ linux ubuntu notepad++


【解决方案1】:

理论上它可能是可能的(见下文),实际上它相当复杂,仅适用于简单的编译(如单文件 hello world 类型)。

我建议你尝试一个 linux 程序,例如

  • 像这样的编辑器
    • scite(与 notepad++ 相同的编辑引擎)或
    • 凯特
  • 或像真正的 IDE
    • kdeveloper 或
    • qtcreator.

Notepad++ 内的 wine 和 g++ 外的 wine(来自 linux 安装)的问题是:

  • linux下wine里面notepad++还是windows程序
  • NppExec 只能做,wine 中的 cmd 可以做的事情。
  • 直接在 cmd 中启动 g++ 会出错,因为 g++ 是 linux 二进制文件而不是 windows 二进制文件
    • 那是你的CreatProcess() failed with error code 2,意思是:你正试图在wine中执行一个linux程序。
    • 那行不通! (至少没那么容易。)
    • 虽然你可以使用start /unix ...在cmdinside wine中启动linux程序
  • 以这种方式开始,g++ 需要 linux 路径,而 NppExec 通过其变量将仅提供 windows 路径(无论 wine 设置为驱动器,如 Z:\home\username\src\hello.cpp
    • 虽然您可以通过winepath -u 命令将wine 路径转换为linux 路径。
  • g++ 通过 'start /unix ...' 在 wine 中的 cmd 内启动,没有适当的终端向您报告错误
    • 尽管您可以为 g++ 启动一个 xterm 并让 g++ 将其消息报告给 xterm
  • 缺点是 g++ 将使用 xterm 中的 linux 路径报告错误,因此您无法双击错误消息并获取相应的文件名和行。

你明白了:它很复杂不舒服。

对 helloword.cpp 有用的是这个 NppExec 脚本:

NPP_SAVE
npp_run cmd /c start /unix /usr/bin/xterm -e "/usr/bin/winepath -u '$(FULL_CURRENT_PATH)' | xargs g++ -o /tmp/a.out && /tmp/a.out ; echo 'Press return'; read"

第二行

  • 使用 xterm,
  • 让 winepath 将 Z:\home\... 路径转换为 ​​/home/...
  • 使用 /tmp/a.out 作为二进制文件发送到 g++ 进行编译
  • 如果编译成功,则执行/tmp/a.out
  • echoread 用于保持 xterm 处于打开状态,以便您可以读取输出。

如果你真的想在 wine 中使用 Notepad++,一种选择可能是在 wine 之外使用 Gnu Make,并让 NppExec 运行 make allmake run,类似于我的脚本示例中的 g++。这适用于更复杂的编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    相关资源
    最近更新 更多