Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ VS代码构建c++;具有多个.ccp源文件的程序_C++_Visual Studio Code_Linker - Fatal编程技术网

C++ VS代码构建c++;具有多个.ccp源文件的程序

C++ VS代码构建c++;具有多个.ccp源文件的程序,c++,visual-studio-code,linker,C++,Visual Studio Code,Linker,我已在Linux Mint下安装了Microsoft VSCode,并打开了一个名为test1的文件夹,其中包含3个文件: test.cpp-预先声明foo()和bar(),然后在main()中调用这两个函数 foo.cpp-定义函数foo() bar.cpp-定义函数bar() 当我编译test.cpp(在VSCode中使用F5启动调试)时,它失败,未定义对foo()的引用和对条的引用。当我编译foo.cpp和bar.cpp时,由于未定义对main的引用,它们都会失败 我在这里找到了之前问过的

我已在Linux Mint下安装了Microsoft VSCode,并打开了一个名为test1的文件夹,其中包含3个文件:

test.cpp-预先声明foo()bar(),然后在main()中调用这两个函数
foo.cpp-定义函数foo()
bar.cpp-定义函数bar()

当我编译test.cpp(在VSCode中使用F5启动调试)时,它失败,未定义对foo()的引用和对条的引用。当我编译foo.cppbar.cpp时,由于未定义对main的引用,它们都会失败

我在这里找到了之前问过的,从中我发现我可以在VSCode“Terminal”窗口中键入以下内容

g++test.cpp foo.cpp bar.cpp-o a.out
/a.out

…我的程序按预期编译和运行(但显然,我无法进行任何调试)


因此,我首先想知道的是,我如何告诉VSCode编译并链接这两个额外的源文件

除非非常困难,否则我还想获得一些指导,指导我如何进入任务的第2阶段——将foobar编译成一个“库”文件,当我在文件夹test2中处理项目时可以链接到该文件(与test1同级)


如果可能的话,我希望完全在VSCode环境中实现这一点(也许我会考虑在将来的某个时候学习g++和makefiles的复杂性)。

首先制作
a.out
文件,然后更改
/.VSCode/lauch.json
文件。在该文件中,将
“程序”:“无论什么”
更改为
“程序”:“${workspaceFolder}/a.out”
,如果有
“预启动任务”:“C/C++:g++构建活动文件”
,则剪切该行,然后按F5,调试器应该可以正常工作


查看以获得更清晰的信息。

我发现,根据我在OP中链接的问题,将默认输出文件(从test)覆盖到a.out,对我来说并没有特别大的帮助。最后,我只是修改了.vscode/tasks.json中突出显示的元素

“args”:[
“-g”,
${file}”,
“-o”,

…到

“args”:[
“-g”,
“*.cpp”,
“-o”,

用VSCode按F5可以编译和运行程序,正如我所希望的。但我只想提到另一件我感到困惑的事情。输出程序文件在文件夹test1(与3个源文件一起)中简单地写为test(无扩展名)。但是当我键入test+时,请输入VSCode“终端”窗口,我没有得到错误,但我没有从我的程序中得到预期的输出


原来这是因为(a)我忘了键入/test,以及(b)在我的/usr/bin文件夹中有一个名为test的可执行文件(这显然与我无关;它的日期比我安装LinuxMint时早!)我不知道测试程序应该做什么,但它肯定不会像我的测试程序那样显示Hello World

文档会告诉你该做什么。需要做的更改就在这里:谢谢。我花了一段时间才弄明白为什么它仍然不起作用它在你的链接中告诉我(没有给出特别有启发性的错误消息)是因为我按照指示编辑了tasks.json,使用了类似“${workspaceFolder}\*.cpp”的参数而不是${file}。但其中的双反斜杠部分必须与Windows环境相关。最终,我想到用单正斜杠/,这就成功了。也许我没有付出足够的努力,但我本可以使用更好的帮助。linux或macOS的其他文档显示,对同一个mod使用/而不是\ifying tasks.json。我想因为你提到了linux mint,所以我应该把它链接起来。linux文档在这里提到了变化:既然如此,你为什么给我一个指向Windows用户的文档链接?我在问答中说得很清楚,我在linux mint上。无论如何,感谢更新的链接。太好了,谢谢!Pressing F5现在确实运行了我的程序,而且你的链接看起来也很有用。但是在我开始浏览这个链接之前,我可以问一下,是否有什么真正简单的方法可以让调试器运行到我源代码中的某一行(而不必设置一个实际的“断点”,我还没有研究过这个问题)。我记得几年前在Windows MS Visual C中,我可以“运行到当前光标位置”(我记得可能是通过Ctrl+F10调用的)。在我当前使用的“VSG代码”中,有没有与之等价的东西++“环境?不知道,对不起。好吧,无论如何谢谢你的帮助。也许其他人会在这里启发我。或者,如果我在经过合理的研究后自己找不到答案,我会提出另一个问题。”