visual studio code mac使用

visual studio code mac使用

最近需要编写一些C/C++程序,由于体量都不是很大所以想要追求一个轻量化的编辑和编译环境,于是想起了在Dock栏吃灰的VSCode。通过查找资料,包括VSCode的官方文档,最终配置实现了Mac下基于VSCode的C/C++编辑环境搭建。

  1. 准备
    在配置环境之前先检查一下机器上都安装了什么C++编译器,通过以下两条命令可以查看是否安装了g++/clang编译器,本人两种编译器都有装所以其结果如下图所示。
g++ --version
clang++ --version

出现

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

解决方法
在终端输入,会安装xcrun

xcode-select --install

继续验证,安装正确

g++ --version
clang++ --version
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

2.环境
然后回到VSCode去安装如下图所示的两款插件,以获得C++语法高亮、错误检查和调试等功能。
visual studio code mac使用_第1张图片
   那么,前期准备工作完成后进入具体的配置阶段。首先在目录下新建一个文件夹作为工程目录,然后在VSCode中打开该文件夹。在里面新建一个cpp文件命名为main.cpp。随意写点程序在里面。

visual studio code mac使用_第2张图片
   然后点击侧边栏的Debug按钮,点击设置图标,便会提示你选择环境,这里就选择C++那一项。

此时VSCode会在你的工程目录下自动新建一个.vscode的文件夹,并新建了一个launch.json的文件,这里需要对生成的文件进行一些小改动。本人配置如下:
    visual studio code mac使用_第3张图片

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "lldb"
        }
    ]
}

保存后按快捷键⇧⌘B编译,此时会出现提示没有找到要运行的生成任务,所以接下来将进行生成任务的配置工作,VSCode提供了一些模版,有需要的可以自行选择,这里就选则Others。

visual studio code mac使用_第4张图片

此时.vscode目录下会出现一个task.json文件,对它进行改写。本人配置如下:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "hello world",
            "type": "shell",
            "command": "clang++",
            "args": [
                "main.cpp"
            ],
            "group": {
                "kind":"build",
                "isDefault": true
            }
        }
    ]
}

保存后再次按快捷键⇧⌘B就能够顺利编译了,编译完成后按F5执行,得到输出结果。

3.其他

每次编译完成后,我们会发现目录下多了一个a.out文件,这个文件是Linux/Unix环境下编译器编译源代码并连接产生的可执行文件,在未指定的情况下其默认命名为a.out。那么如何通过修改配置文件来修改这个文件的命名呢?
   方法很简单,在task.json中的args属性下填入-o yourfilename.out,以本人的配置作为示例:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "hello world",
            "type": "shell",
            "command": "clang++",
            "args": [
                "-o app.out",
                "main.cpp"
            ],
            "group": {
                "kind":"build",
                "isDefault": true
            }
        }
    ]
}

可以发现这里的command和args两个属性就相当于在命令行中执行了clang++ -o yourfilename.out main.cpp,所以如果还有其他的需求也可以对这里进行改写。最后不要忘记修改launch.json中的program属性,将.out的文件名修改为与task.json一致。便可以成功编译执行了

  1. 编译多个cpp
    如果有多个cpp,发现编译会出现
symbol(s) not found for architecture x86_64

经过大量分析发现
g++不会正确的编译其他的CPP文件,你可以看VSCode的命令:
g++ /Users/stanhu/Desktop/Git/Foundation/CPP_Learn/main.cpp -o /Users/stanhu/Desktop/Git/Foundation/CPP_Learn/main.out -g -Wall -fcolor-diagnostics -std=c++11
只编译了main.cpp文件而没有编译a.cpp文件,所以会出现symbols for architecture x86_64错误
所以正确的做法是:g++ main.cpp a.cpp -o main.out
再执行./main.out

在clion有cmakelist.txt,原本只有

cmake_minimum_required(VERSION 3.14)
project(audioprocessing2)

set(CMAKE_CXX_STANDARD 14)

add_executable(audioprocessing2 main.cpp)

增加后编译成功

cmake_minimum_required(VERSION 3.14)
project(audioprocessing2)

set(CMAKE_CXX_STANDARD 14)

add_executable(audioprocessing2 main.cpp a.cpp)

难道不能直接连接所有的c文件么?

你可能感兴趣的:(coding)