【问题标题】:Use VS Code for Cross-Platform Scalable C++ Project使用 VS Code 进行跨平台可扩展 C++ 项目
【发布时间】:2020-05-28 07:58:56
【问题描述】:

VS Code 团队提供的本教程解释了如何使用 MinGW (https://code.visualstudio.com/docs/cpp/config-mingw) 在 VS Code 中设置 C++,但它似乎只针对小型项目,因为它被配置为每次都重新构建所有文件,并且是'不设置为允许轻松配置项目(全局定义,添加链接库等)(或者我错过了什么?)。

我正在考虑使用 CMake 作为我在 VS Code 中的构建工具,但是我真的被必须更新 CMakeLists.txt 文件以更改我的项目配置的想法关闭,例如每次我将文件添加到我的项目或链接一个新库时,因为我已经使用为我完成此过程的 IDE 长大,我发现这很容易,因为它让我可以完全专注于编写代码。

我的问题是,是否有一种已知的方法来设置 VS Code,让我可以使用 CMake 等工具而不必经常修改它?

本教程似乎是设置 CMake 的一个很好的起点,但它的方法需要 CMake 知识https://pspdfkit.com/blog/2019/visual-studio-code-for-cpp/

理想情况下,我希望该设置能够同时满足小型和大型项目的需求,这两者都应该允许跨平台构建。

谢谢

【问题讨论】:

  • 我从未遇到过能神奇地将文件和库添加到项目中的 IDE。他们有一些 GUI 设置来修改项目/制作文件。在 Make 和 QMake 中,您可以添加文本以包含目录中的所有 cpp 文件。但如果需要,不要添加库。如果您安装了多个版本的库怎么办。应该选择哪一个,它应该在哪里寻找库?
  • 我从来没有建议我想要一个“神奇地添加文件”到我的项目的功能。我只是希望能够将添加的 .cpp 和 .h 文件包含在我的 makefile 中,而无需执行任何操作,只需将其放在 VS Code 工作区中即可。 Visual Studio 是这样工作的,Qt Creator 是这样工作的,Codeblocks 是这样工作的,任何现代 IDE 都是这样工作的
  • VSC 是一个编辑器(有好处)而不是一个 IDE。然后为您的特定构建工具编写一个扩展来执行此操作。
  • VSC 背后的整个理念是模块化——允许程序员将其用作编辑器,或将其转换为成熟的 IDE。它有调试工具,有版本控制工具等等。它背后的想法是可配置性——我只是想问是否有一个工具可以为我完成这项工作。 ;)
  • 如果你为 CMake 编写这个扩展,我们都会受益

标签: c++ visual-studio-code cmake project


【解决方案1】:

由于 Visual Studio Code 不是重量级的 IDE,您需要付出一些努力才能让它按照您希望的方式运行,或者: 编写一个 CMake InputFile 生成器,例如:

list(APPEND EXECUTABLE_LIST executable_1 executable_2)
list(APPEND LIBRARY_LIST library_2 library_2 library_3)

foreach(lib IN LISTS LIBRARY_LIST)
     add_library(${lib} STATIC ${lib}.cpp)
endforeach()

foreach(exe IN LISTS EXECUTABLE_LIST)
    add_executable(${exe} ${exe}.cpp)
    target_include_directories(${exe} PUBLIC ${CMAKE_CURRENT_LIST_DIR})
    target_link_libraries(${exe} ${LIBRARY_LIST})
endforeach()

或者你也可以使用Visual Studio Code CMake Tool extention

当然,您不能指望 VS Code 中的 Visual Studio 之类的强大功能,因为它们服务于不同的目的(高度专业化、深度系统耦合但又慢又大vs 小、快、高度可配置)。

【讨论】:

  • 谢谢!我目前正在研究扩展。感谢帮助
猜你喜欢
  • 1970-01-01
  • 2011-04-18
  • 2020-03-07
  • 2015-12-18
  • 2011-12-25
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多