使用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 - Text 2中使用Sublime -build文件启动程序时,我得到以下错误:
[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]
这是我的sublime-build文件供参考:
{
"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" }
}
相关文章:
- CMake-按正确顺序将项目与C运行时对象文件链接
- 我在c++代码中生成了一个运行时#3异常
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- c++中的指针和运行时错误
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 建议在运行时将带有类实例的列表从c++导入qml
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- Mac os x app bundle 在下载并运行时崩溃,但在终端或更改 Info.plist 时运行良好
- 从 eclipse IDE 运行工作正常,但在从终端运行时终止
- OpenCV C++代码在终端中运行良好,但在从Ubuntu 12.04运行时出错
- 为什么我的 SFML 游戏只能在终端中运行时使用
- 我在我的程序中添加了一个void函数,它不接受任何参数,现在我的程序在运行时只返回一个空白终端
- 使用sublime-build时不能运行c++程序,从终端运行时工作正常
- 在cygwin终端运行时显示不存在的文件夹
- C++代码仅在程序从终端运行时执行