Notepad++ 如何编译/执行C++;记事本内的代码++;

Notepad++ 如何编译/执行C++;记事本内的代码++;,notepad++,nppexec,Notepad++,Nppexec,我正在阅读并决定尝试一下,这样我就可以继续用Notepad++编写代码,并缩短编译/运行周期 当我尝试将编译/运行代码输入NppExec时,它不起作用。我现在的代码是: npp_save cd "$(C:\Users\Bart\Desktop\new delete me)" g++ "$(test.cpp)" -o $(testme.exe) -march=native -O3 NPP_RUN $(testme.exe) 这是基于我给出的第一个链接: npp_save cd "$(CURREN

我正在阅读并决定尝试一下,这样我就可以继续用Notepad++编写代码,并缩短编译/运行周期

当我尝试将编译/运行代码输入NppExec时,它不起作用。我现在的代码是:

npp_save
cd "$(C:\Users\Bart\Desktop\new delete me)"
g++ "$(test.cpp)" -o $(testme.exe) -march=native -O3
NPP_RUN $(testme.exe)
这是基于我给出的第一个链接:

npp_save
cd "$(CURRENT_DIRECTORY)"
g++ "$(FILE_NAME)" -o $(NAME_PART) -march=native -O3
NPP_RUN $(NAME_PART)
Notepad++在其控制台中为我提供了以下信息:

NPP_SAVE: C:\Users\Bart\Desktop\new delete me\test.cpp
CD: 
Current directory: C:\Program Files (x86)\Notepad++
g++ "" -o  -march=native -O3
CreateProcess() failed with error code 2:
The system cannot find the file specified.

NPP_RUN:
- empty command
从其他页面上看,似乎我只需要粘贴代码,所有大写字母都不是要替换的,而是变量。所以我用了这个代码:

npp_save
cd "$(CURRENT_DIRECTORY)"
g++ "$(FILE_NAME)" -o $(NAME_PART) -march=native -O3
NPP_RUN $(NAME_PART)
在Notepad++控制台中提供了以下内容:

NPP_SAVE: C:\Users\Bart\Desktop\new delete me\test.cpp
CD: C:\Users\Bart\Desktop\new delete me
Current directory: C:\Users\Bart\Desktop\new delete me
g++ "test.cpp" -o test -march=native -O3
CreateProcess() failed with error code 2:
The system cannot find the file specified.

NPP_RUN: test
- the specified file was not found
以下是我为做好准备所做的工作:

我下载了mingw-get-setup.exe,从中安装了mingw安装管理器。然后我用它安装了mingw32-gcc-++包,以及mingw32-libz.dll和mingw32-libz.dev包

在记事本++中,我使用插件管理器安装NppExec插件

我可以先在命令窗口中手动编译代码来运行代码。Notepad++抱怨它缺少一个库,因此我在编译时使用以下标志: g++test.cpp-静态libgcc-静态libstdc++

如果我在记事本++中点击F5(或单击运行菜单中的运行),我可以选择从命令行编译中创建的a.exe文件,它将弹出一个命令窗口并运行该代码,因此工作正常

但是,当我尝试自动编译/运行时,我的change directory命令似乎由于某种原因在NppExec中不起作用

下面是我发现的一些其他stackoverflow帖子,它们解决了类似的问题,但似乎不适用于我。我没有任何观点,因此我无法回答其中任何一点:

嗯,我链接到的第一篇文章似乎有一个部分解决方案——看起来(尽管文章名称中提到了c文件),它总结了如何编译perl脚本。它说在NppExec窗口中放置以下内容:

NPP_SAVE
CD $(CURRENT_DIRECTORY)
C:\MinGW32\bin\gcc.exe -g "$(FILE_NAME)"
a.exe

它的最后一行只有“a”,但这和“a.exe”是一样的,这样更容易让人阅读。尽管如此,这并不是一个完整的解决方案。这只是在Notepad++的内部控制台中运行文件,在屏幕底部,我希望它弹出一个窗口,如果我使用Notepad++的F5从其directoy运行编译的程序,就会发生这种情况。

关于您的最后一个问题,如何在自己的窗口中而不是在Notepad++控制台中启动a.exe:尝试用以下内容替换最后一行a.exe:

NPP_RUN cmd /k a
npp_run是npp_exec的一个命令,这里它启动命令“cmd/k a”,cmd/k执行“/k”后面的命令,并在a.exe终止后保持窗口打开。

我从这里得到了一个工作代码(我编辑了一点):

在这种形式下,它编译源文件旁边的二进制文件。如果将最后一行更改为:

cmd /c "$(CURRENT_DIRECTORY)\$(NAME_PART).exe"

程序运行在NPXECUC控制台,运行<代码> CMD.exe < /C> >

< P>作为<强>大>强> >记事本+ F+和C++新手,我花了点时间理解和遵循指令。p> 这里缺少一个部分,如果您像我一样,从新开始,对MinGW编译器一无所知。您可能需要先设置一个

如果MinGW编译器不在您的环境路径中(或者不希望是:可移植版本/策略限制),那么您可以遵循此操作。


  • 安装

  • 选择核心包,确保它们都在同一版本上,否则会出现奇怪的错误,比如编译/运行时缺少
    stddef.h
    文件。我从MinGW Installation Manager中选择了以下选项:

  • 在记事本++中创建脚本:
  • npp\u保存
    VCD C:\MinGW\bin\
    g++“$(完整的当前路径)”-o
    “$(当前目录)\$(名称部分).exe”
    cmd/c“$(当前目录)\$(名称\u部分).exe”
    
  • 在记事本+++中编译并执行程序:

  • 您可以从nppexec>高级选项中添加直接执行按钮或快捷方式F5。“执行”按钮是工具栏末端的小按钮:

  • 或者,您可以将MinGW添加到环境路径中,如果您想从任何位置运行编译后的程序,可以在它们的 这样,您可以跳过MinGW目录中的指向:

    cd C:\MinGW\bin\
    
    我自己编写了一个工作代码,要求用户

  • 输出文件名
  • 它应该去的地方的目录
  • 以及其他编译器选项,如-m32或其他任何真正
  • 我还处理了空目录和名称,这样就不会出现bug。 我期待着改善这一点,但它现在的工作

    //save file
    npp_saveall
    
    //specify directory
    //if blank set to src dir
    inputbox "Specify Directory" : " save_directory" : $(CURRENT_DIRECTORY)
    set DIR = $(INPUT)
    if "$(INPUT)" == " " then
    set DIR = $(CURRENT_DIRECTORY) 
    endif
    if "$(INPUT)" == "" then
    set DIR = $(CURRENT_DIRECTORY) 
    endif
    
    
    //specify file name
    //if blank set to a.exe
    inputbox "Choose executable name" : " file_name" : a.exe
    set NAME = $(INPUT)
    if "$(INPUT)" == " " then
    set NAME = a.exe
    endif
    if "$(INPUT)" == "" then
    set NAME = a.exe
    endif
    
    //add compiling options
    inputbox "Additional compiling options" : " add_options" : -m32 -I"C:\SDL2-2.0.12\i686-w64-mingw32 (x32)\include\SDL2" -L"C:\SDL2-2.0.12\i686-w64-mingw32 (x32)\lib"
    set OPTIONS = $(INPUT)
    
    //launch g++ compiler
    g++.exe "$(FULL_CURRENT_PATH)" -o"$(DIR)\$(NAME)" $(OPTIONS)
    
    //run compiled prgram
    if $(EXITCODE) == 0 then
    messagebox "Compilation successfull. Saved in '$(DIR)'. Running $(NAME)" : "MinGW g++ Compiler"
    npp_run "$(DIR)\$(NAME)"
    else
    messagebox "Compilation not successfull."
    
    请注意,我在脚本中添加了SDL文件。只需移除它们。
    希望这是有帮助的。

    看起来你想用问题库来更新问题,或者去链接问题的答案——C,C++,perl,它们都是一样的,就像NP+ +如何构建和执行它们一样。我没有一个缺少的库。我在这个链接的帖子上看到了一个答案,它描述了如何在记事本的控制台屏幕上运行C++程序,在记事本+窗口的底部,但是我在宽屏笔记本电脑(这意味着一个短屏幕),我没有空间有两个窗口,一个垂直地在另一个上面,并且在这两个窗口中显示了几行。我希望它弹出一个控制台窗口,就像我直接用Notepad++的Run命令(默认为F5)运行编译后的可执行文件一样。对我来说,直到我替换了非常相似但不同的最后一行:cmd/c”“$(当前目录)\$(NAME\u PART.exe”“,它才起作用,唯一的区别是,它的两边各有2个双引号,而不是你的两边各有1个双引号。
    //save file
    npp_saveall
    
    //specify directory
    //if blank set to src dir
    inputbox "Specify Directory" : " save_directory" : $(CURRENT_DIRECTORY)
    set DIR = $(INPUT)
    if "$(INPUT)" == " " then
    set DIR = $(CURRENT_DIRECTORY) 
    endif
    if "$(INPUT)" == "" then
    set DIR = $(CURRENT_DIRECTORY) 
    endif
    
    
    //specify file name
    //if blank set to a.exe
    inputbox "Choose executable name" : " file_name" : a.exe
    set NAME = $(INPUT)
    if "$(INPUT)" == " " then
    set NAME = a.exe
    endif
    if "$(INPUT)" == "" then
    set NAME = a.exe
    endif
    
    //add compiling options
    inputbox "Additional compiling options" : " add_options" : -m32 -I"C:\SDL2-2.0.12\i686-w64-mingw32 (x32)\include\SDL2" -L"C:\SDL2-2.0.12\i686-w64-mingw32 (x32)\lib"
    set OPTIONS = $(INPUT)
    
    //launch g++ compiler
    g++.exe "$(FULL_CURRENT_PATH)" -o"$(DIR)\$(NAME)" $(OPTIONS)
    
    //run compiled prgram
    if $(EXITCODE) == 0 then
    messagebox "Compilation successfull. Saved in '$(DIR)'. Running $(NAME)" : "MinGW g++ Compiler"
    npp_run "$(DIR)\$(NAME)"
    else
    messagebox "Compilation not successfull."