簡體   English   中英

使用sublime-build時無法運行C ++程序,從終端運行時可以正常工作

[英]Cannot run C++ program when using sublime-build, works fine when running from terminal

我正在嘗試在Linux / Ubuntu 14.04上運行C ++程序

我正在使用SFML庫,如果SFML安裝在非標准路徑中(本來是),則該教程建議在運行之前包括以下行:

$ export LD_LIBRARY_PATH=<sfml-install-path>/lib

我可以使用以下輸入從終端運行程序:

$ export LD_LIBRARY_PATH=/home/dan/SFML-2.3.1/lib && ./YorickTheSavant

但是,當嘗試使用sublime-build文件在Sublime Text 2中啟動程序時,出現以下錯誤:

[Errno 2] No such file or directory
[cmd:  [u'export', u'LD_LIBRARY_PATH=/home/dan/SFML-2.3.1/lib', u'&&', u'./YorickTheSavant']]
[dir:  /home/dan/yorickthesavant]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/dan/.rvm/bin]
[Finished]

這是我的崇高構建文件供參考:

{
"cmd": ["g++", "-m32", "-c", "-std=c++11",

"src/buff.cpp",
"src/card.cpp",
"src/clickableObject.cpp",
"src/creature.cpp",
"src/dataHandler.cpp",
"src/dungeonRun.cpp",
"src/enemy.cpp",
"src/gameQueue.cpp",
"src/gameSystem.cpp",
"src/graphics.cpp",
"src/hoverText.cpp",
"src/infoText.cpp",
"src/main.cpp",
"src/player.cpp",
"src/queueBlock.cpp",
"src/queueEffect.cpp",
"src/roundedCornerRect.cpp",
"src/save.cpp",
"src/ttText.cpp",

"-I", "include"],

"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "/home/dan/yorickthesavant/",
"selector": "source.c, source.c++",

"variants":
[
    {
        "name": "Link",

        "cmd": ["g++", "-m32",

        "buff.o",
        "card.o",
        "clickableObject.o",
        "creature.o",
        "dataHandler.o",
        "dungeonRun.o",
        "enemy.o",
        "gameQueue.o",
        "gameSystem.o",
        "graphics.o",
        "hoverText.o",
        "infoText.o",
        "main.o",
        "player.o",
        "queueBlock.o",
        "queueEffect.o",
        "roundedCornerRect.o",
        "save.o",
        "ttText.o",

        "-o", "YorickTheSavant",
        "-L", "/home/dan/SFML-2.3.1/lib",
        "-lsfml-graphics",
        "-lsfml-window",
        "-lsfml-system"]
    },
    {
        "name": "Run",
        "cmd": ["export", "LD_LIBRARY_PATH=/home/dan/SFML-2.3.1/lib", "&&", "./YorickTheSavant"]
    }
]
}

我正在使用“運行”變體。 我如何做到這一點,以便在終端之外啟動游戲並在Sublime Text 2中自動添加該行?

.sublime-build文件中的cmd密鑰指定要運行的程序。 第一個值應該是程序,其余的是參數,因此當它找不到名為export的程序時會失敗-因為它是內置的shell。

要在shell中運行整個命令(就像手動執行操作一樣),可以在Run變體中指定"shell" : true (或使用shell_cmd代替cmd ):

{
    "name": "Run",
    "cmd": ["export", "LD_LIBRARY_PATH=/home/dan/SFML-2.3.1/lib", "&&", "./YorickTheSavant"],
    "shell" : true
}

這應該比直接調用/bin/sh -c <stuff>更好,並且我認為您不再需要將cmd數組中的條目壓縮為單個字符串。

或者,您也可以嘗試在運行可執行文件之前使用env鍵(也在此處找到)指定LD_LIBRARY_PATH環境變量:

{
    "name": "Run",
    "cmd": ["./YorickTheSavant"],
    "env" : { "LD_LIBRARY_PATH" : "/home/dan/SFML-2.3.1/lib" }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM