VSCode build with cmake
- ctrl+shift+p -> Tasks: Configure Task
vscode open tasks.json
- Project fs structure
├── bin
├── build
├── doc
└── src
├── CMakeLists.txt
└── hello.cpp
└── CMakeLists.txt
- Add three task
- cmake: run cmake from build sub folder
- make: run make depend on cmake
- build: bind the above
{
"version": "2.0.0",
"tasks": [
{
"label": "cmake",
"type": "shell",
"options": {
"cwd": "${workspaceRoot}/build"
},
"command": "cmake",
"args": [
".."
]
},
{
"label": "make",
"type": "shell",
"options": {
"cwd": "${workspaceRoot}/build"
},
"command": "make",
"dependsOn": "cmake"
},
{
"label": "build",
"type": "shell",
"dependsOn": "make",
"command": "echo",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
- Note: task
build
command key need to be fill with some valueecho
cmake files
- root cmake
- set bin folder as binary output
- set c++ version:
set(CMAKE_CXX_STANDARD 11)
cmake_minimum_required(VERSION 3.0)
project(tutorials)
#set binary output
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
message(${EXECUTABLE_OUTPUT_PATH})
#set flags
set(CMAKE_CXX_STANDARD 11)
#add source directory
add_subdirectory(src)
- src
add_executable(hello hello.cpp)
Debug Task
- Control cmake settings from command line
- Add args to task
- Add
option
variable and if statement to cmake
Main CMakeLists.txt
- Add boolean variable control
option (MODE_DEBUG "Set debug mode" OFF)
if (MODE_DEBUG)
message("DEBUG MODE")
set (CMAKE_BUILD_TYPE Debug)
endif()
- Add new task to VSC with args
-DMODE_DEBUG=TRUE
{
"label": "cmake_with_debug",
"type": "shell",
"options": {
"cwd": "${workspaceRoot}/build"
},
"command": "cmake",
"args": [
"..",
"-DMODE_DEBUG=TRUE"
]
}
- Add VSC keybinding
{
"key": "ctrl+shift+d",
"command": "workbench.action.tasks.runTask",
"args": "cmake_with_debug"
}
Debug
launch.json
- Changed to debug mode
- From combo box ->
Add configuration
- open
launch.json
- open
- Set
program
to debug
"program": "${workspaceFolder}/bin/hello",
No comments:
Post a Comment