MAC OS 下用cmake编写和调试 C/C++

下载VSCode

VSCode的标语是Code editing.Redefined.
特点是Free. Open source. Runs everywhere.
点击跳转到code首页下载

检查C语言环境

主要包括以下几个命令:

  • cmake
  • make -v
  • gcc/g++ -v
  • lldb -v

其中,前两个命令用来运行

  • CMakeLists.txt
  • MakeFile

没有这几个命令的话需要安装

编写CMakeLists.txt

需要配置多个目录下的多个文件的编译,目录结构如下:

.
├── bin
├── build
└── src
    ├── cJSON
    │   ├── LICENSE
    │   ├── README
    │   ├── cJSON.c
    │   ├── cJSON.h
    ├── convert
    │   ├── chardata.cpp
    │   ├── charutil.cpp
    │   ├── charutil.h
    │   ├── charwrap.cpp
    │   └── charwrap.h
    └── main.cpp

src是主目录,包括文件main.cpp和两个目录。
主目录,和每个子目录都需要写CMakeList.txt

这个是主目录下的CMakeList.txt

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)

if(CMAKE_CL_64)    #CMAKE的内建变量,如果是true,就说明编译器的64位的,自然可以编译64bit的程序
set(ADDRESS_MODEL 64)
set(NODE_TARGET x64)
else()
set(ADDRESS_MODEL 32)
set(NODE_TARGET x86)
endif()

set(CMAKE_BUILD_TYPE "Debug")

# 项目信息
project (demo)

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)

# 添加子目录
add_subdirectory(cJSON)
add_subdirectory(convert)

# 指定生成目标 
add_executable(demo main.cpp)

# 添加链接库
target_link_libraries(demo cJSON)
target_link_libraries(demo convert)

这个是子目录下的CMakeList.txt,记得修改多个目录下的名字,这里以convert为例

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_LIB_SRCS 变量
aux_source_directory(. DIR_LIB_SRCS)

# 生成链接库
add_library (convert ${DIR_LIB_SRCS})

配置之后的目录结构如下:

.
├── bin
├── build
└── src
    ├── CMakeLists.txt
    ├── cJSON
    │   ├── CMakeLists.txt
    │   ├── LICENSE
    │   ├── README
    │   ├── cJSON.c
    │   ├── cJSON.h
    ├── convert
    │   ├── CMakeLists.txt
    │   ├── chardata.cpp
    │   ├── charutil.cpp
    │   ├── charutil.h
    │   ├── charwrap.cpp
    │   └── charwrap.h
    └── main.cpp

开始编译

生成MakeFile

cd build
cmake ../src

运行MakeFile

cd build
make

如果提示100% 一般就是编译成功了,不成功的话,原因多种多样,需要对应错误查找办法,这里是成功的提示:

[ 87%] Built target cJSON
[ 95%] Built target convert
[100%] Built target Demo

编写VSCode任务

调出命令行Ctrl+Shift+P,输入Task,选择任务配置,
这个时候发现目录下多个.vscode/task.json
附例子

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build",
      "type": "shell",
      "command": "make",
      "args": [
        // Ask msbuild to generate full paths for file names.
        "-C",
        "build"
      ],
      "group": "build",
      "presentation": {
        // Reveal the output only if unrecognized errors occur.
        "reveal": "silent"
      },
    }
  ]
}

编写VSCode执行配置

调出命令行Ctrl+Shift+P,输入launch,选择任务配置,
这个时候发现目录下多个.vscode/launch.json
附例子

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(lldb) Launch",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/build/Demo",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "targetArchitecture": "x64",
      "environment": [],
      "preLaunchTask": "build",
      "externalConsole": true,
      "MIMode": "lldb"
    }
  ]
}

开始Debug

在代码中设置断点
我这里就是在main函数第一行设置的断点,方便查看
在VSCode中F5,查看输出

...
1 warning generated.
[100%] Linking CXX executable Demo
[100%] Built target Demo

终端将被任务重用,按任意键关闭。

可以看出已经成功跳转到断点

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值