vscode+cmake 实现C++项目的完整编译

1.项目目录

.
├── bin
├── build
├── CMakeLists.txt
├── include
│   ├── array_2d.h
│   ├── common.h
│   └── swap.h
├── lib
└── src
    ├── array_2d.cpp
    ├── main.cpp
    └── swap.cc
  • bin:存放可执行二进制文件
  • build:存放编译文件
  • include:存放头文件
  • src:存放源文件
  • lib:存放库
  • CMakeLists.txt:cmake文件

2.CMakeLists.txt文件

cmake_minimum_required(VERSION 2.8)
project(bilibli)

set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_CXX_FLAGS "-std=c++11 -O3")

# cmake文件目录
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/build)

# 可执行二进制文件目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

# 库文件目录
set(LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
link_directories(${PROJECT_SOURCE_DIR}/lib)

# 头文件目录
include_directories(${PROJECT_SOURCE_DIR}/include)

# 添加静态库
add_library(mylib STATIC
            src/array_2d.cpp
            src/swap.cc
            )

# 生成可执行文件
add_executable(main src/main.cpp)

# 链接静态库
target_link_libraries(main mylib)

3.编译和链接(cmake、make)

cd ./build
cmake ..
make
  • make之后的项目目录
.
├── bin
├── build
├── CMakeLists.txt
├── include
│   ├── array_2d.h
│   ├── common.h
│   └── swap.h
├── lib
└── src
    ├── array_2d.cpp
    ├── main.cpp
    └── swap.cc

5 directories, 7 files
wxy@wxy-linux:~/C++learning/bilibli$ tree
.
├── bin
│   └── main
├── build
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   │   ├── 3.16.3
│   │   │   ├── CMakeCCompiler.cmake
│   │   │   ├── CMakeCXXCompiler.cmake
│   │   │   ├── CMakeDetermineCompilerABI_C.bin
│   │   │   ├── CMakeDetermineCompilerABI_CXX.bin
│   │   │   ├── CMakeSystem.cmake
│   │   │   ├── CompilerIdC
│   │   │   │   ├── a.out
│   │   │   │   ├── CMakeCCompilerId.c
│   │   │   │   └── tmp
│   │   │   └── CompilerIdCXX
│   │   │       ├── a.out
│   │   │       ├── CMakeCXXCompilerId.cpp
│   │   │       └── tmp
│   │   ├── cmake.check_cache
│   │   ├── CMakeDirectoryInformation.cmake
│   │   ├── CMakeOutput.log
│   │   ├── CMakeTmp
│   │   ├── main.dir
│   │   │   ├── build.make
│   │   │   ├── cmake_clean.cmake
│   │   │   ├── CXX.includecache
│   │   │   ├── DependInfo.cmake
│   │   │   ├── depend.internal
│   │   │   ├── depend.make
│   │   │   ├── flags.make
│   │   │   ├── link.txt
│   │   │   ├── progress.make
│   │   │   └── src
│   │   │       └── main.cpp.o
│   │   ├── Makefile2
│   │   ├── Makefile.cmake
│   │   ├── mylib.dir
│   │   │   ├── build.make
│   │   │   ├── cmake_clean.cmake
│   │   │   ├── cmake_clean_target.cmake
│   │   │   ├── CXX.includecache
│   │   │   ├── DependInfo.cmake
│   │   │   ├── depend.internal
│   │   │   ├── depend.make
│   │   │   ├── flags.make
│   │   │   ├── link.txt
│   │   │   ├── progress.make
│   │   │   └── src
│   │   │       ├── array_2d.cpp.o
│   │   │       └── swap.cc.o
│   │   ├── progress.marks
│   │   └── TargetDirectories.txt
│   ├── cmake_install.cmake
│   ├── libmylib.a
│   └── Makefile
├── CMakeLists.txt
├── include
│   ├── array_2d.h
│   ├── common.h
│   └── swap.h
├── lib
└── src
    ├── array_2d.cpp
    ├── main.cpp
    └── swap.cc

4.运行可执行文件

wxy@wxy-linux:~/C++learning/bilibli/bin$ ./main
  • 运行结果如下
2,1

***********以上就是利用cmake实现编译一个完整C++项目的步骤。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值