我在Linux Mint下安装了Microsoft VSCode,并打开了一个名为test1的文件夹,其中包含3个文件:
test.cpp-预先声明foo((和bar(
当我编译test.cpp(在VSCode中使用F5启动调试(时,它失败了,因为未定义对foo的引用((和对bar的未定义引用。当我编译foo.cpp和bar.cpp时,它们都失败了,因为未定义对main的引用
我发现VS Code不会像以前在这里要求的那样使用多个.ccp源文件来构建c++程序,从中我发现我可以在VSCode中键入以下内容;终端";窗
g++test.cpp foo.cpp bar.cpp-o a.out
/a.out
。。。我的程序按预期编译和运行(但显然我无法进行任何调试(。
所以我想知道的是,在第一个例子中,我如何告诉VSCode编译并链接这两个额外的源文件
除非这会非常困难,否则我还希望得到一些关于如何进入任务的第二阶段的指导——将foo和bar编译为";图书馆";在test2文件夹(test1的同级(中处理项目时,我可以链接到的文件。
如果可能的话,我希望完全在VSCode环境的背景下实现这一点(也许我会考虑在未来的某个时候学习g++和makefile的复杂性(。
首先制作a.out
文件,然后更改/.vscode/lauch.json
文件。在该文件中,将"program": "whatever"
更改为"program": "${workspaceFolder}/a.out"
,如果有"preLaunchTask": "C/C++: g++ build active file",
,则剪切该行,然后按F5,调试器应该可以正常工作。
点击此处查看更多信息。
我发现,根据我在OP中链接到的问题,将默认输出文件(从test(覆盖到a.out对我没有特别的帮助。最后,我只是从…修改了.vscode/tasks.json中突出显示的元素。。。
"args":[
"-g">
">${file}">
。。。到…
"args":[
"-g">
"*.cpp",
quot;-o quot;,
…
使用VSCode按F5编译并运行程序,正如我所希望的那样。但我只想提一件我感到困惑的事情。输出程序文件简单地写为test1文件夹中的test(无扩展名((与3个源文件一起(。但是当我在VSCode中键入test+ENTER时;终端";窗口,我没有得到错误,但我没有从我的程序中得到预期的输出。
原来这是因为(a(我忘了键入/测试和(b(在我的/usr/bin文件夹中有一个名为test的可执行文件(这显然与我无关;它的日期早于我安装Linux Mint的时候!(!