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

2023-05-16

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++项目的步骤。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vscode+cmake 实现C++项目的完整编译 的相关文章

  • 在生成器表达式中使用 cmake 选项

    我想在生成器表达式中使用 cmake 选项 为了打开某个编译标志 来自文档 https cmake org cmake help v3 10 manual cmake generator expressions 7 html我不清楚如何实现
  • 针对 dll/lib 的 cmake 链接

    我的 cmake 的输出是一个静态库 我正在这样创建它 add library myMainLib STATIC BACKEND SOURCES 当我尝试让 myMainLib 链接到第三方 lib dll 时 出现了问题 dll 文件将在
  • 为什么 cmake 在 git commit 后编译所有内容

    假设我有时在 Linux 上使用 cmake 2 8 编译一段代码 我更改了一个文件 my changed file 运行 cmake 并且只构建了这个文件 到目前为止 一切都很好 现在我想提交这个 git add my changed f
  • 将 dll/lib 链接到 cmake 项目

    我试图将库链接到我的 cmake 项目 但遇到链接器错误 我花了 2 个小时尝试解决这个问题 并创建了一个简单的项目 在其中对所有路径进行了硬编码 CMAKE MINIMUM REQUIRED VERSION 3 0 PROJECT Tes
  • CMake 找不到请求的 Boost 库

    既然我已经浏览了其他人的解决方案几个小时 但找不到适合我的问题的正确答案 我想将我的具体问题带给您 我正在尝试使用 CMake 构建 vsomeip 为此 我之前构建了 boost 1 55 但是 我在 CMake 中收到以下错误 The
  • 如何防止 CMake 在构建时(而不是安装时)为共享库创建符号链接?

    我正在使用 CMake 在 Linux 上使用 Bullet3 构建一个项目 在构建整个解决方案时 它会构建附加了 SOVERSION 的 Bullet 输出库 并创建一个不带版本的符号链接 对于我的特定场景 我不喜欢这种行为 并且我不想编
  • 如何将最新的 Windows SDK 版本传递给 CMake?

    如何将最新的 Windows SDK 版本传递给 CMake 这样我就不需要进入 Visual Studio 并从配置属性 常规中手动放置它 我在互联网上搜索 找到了 CMAKE SYSTEM VERSION 变量 并且尝试使用 set C
  • 如何在 CMake Makefile 中包含 OpenCV 库

    我希望你可以帮助我 我有一个简单的 CMakeLists txt 以便在 Leopard 10 5 8 上构建我的项目 我正在使用 CMake 2 8 1 目前这是代码 cmake minimum required VERSION 2 8
  • 将 gcov 与 CMake/CDash 结合使用的详细指南?

    我在我的项目中使用 CMake 并设置了 cdash 服务器以进行连续 夜间构建 一切运行良好 通过设置 crontab 我们可以将每小时 每晚的构建 测试结果自动上传到我们的 cdash 服务器 我的下一步是将测试覆盖率报告添加到构建中
  • 使用cmake交叉编译gRPC

    我正在尝试使用 cmake 交叉编译 gRPC 我实际上做到了 不幸的是 我的方法涉及在 CMakeLists txt 内部进行修改 问题是 当我尝试编译 gRPC 时 它使用的是他刚刚编译的 protobuffer 它无法在 x86 计算
  • CMAKE - 运行时库隐藏文件

    我正在运行 Linux Redhat 我安装了 Anaconda 并且我正在尝试使用安装程序 libspimage CMAKEamd 我收到以下警告 错误 src CMakeLists txt 74 ADD LIBRARY 处的 CMake
  • Opencv - 找不到头文件

    我正在尝试使用 opencv 开始开发 问题是 到目前为止我几乎无法设置 opencv 因为我找不到它的头文件 我对此主题进行了一些研究 但没有一个真正有帮助 下面是一些链接 opencv2 包含文件在哪里 https stackoverf
  • CMake、Exe找不到DLL

    所以我尝试在 Windows 上使用 cmake 设置一个项目 这就是我的项目结构 游戏引擎 git build include source testing CMakeLists txt 这个想法是 source 目录包含 GameEng
  • 我可以安装共享导入库吗?

    我有一个外部项目和一个导入的共享库 include 目录和 implib 都可以正常工作 但尝试安装共享库 dll 失败并出现以下错误 install TARGETS given target my shared lib which doe
  • 编译器标志的 cmake list 附加会产生虚假结果?

    我需要向 CMake 文件 CMake 2 8 10 2 中的 C 和 C 编译行添加各种标志 我看到有些人使用add definitions但据我所知 这是用于预处理器标志的 D 我有一些标志不想传递给预处理器 所以我一直在尝试修改CMA
  • 奇怪的函数参数名称行为

    我问了一个关于cmake和传递变量的问题here https stackoverflow com questions 14375519 cmake how to write a nice function that passes varia
  • CMake第三方库安装

    我是编程新手 对于我的研究项目 我需要安装一个第三方库以便与 CMake 一起使用 GitHub项目 https github com cpp io2d P0267 RefImpl blob master BUILDING md 我在我的电
  • CMakeLists.txt:30(项目)处的 CMake 错误:找不到 CMAKE_C_COMPILER

    我正在尝试使用 CMake 制作 Visual Studio 解决方案来编译最新版本的 aseprite 并且 CMake 不断向我提供 No CMAKE C COMPILER could be found No CMAKE CXX COM
  • 如何配置 cmake 以链接到预构建的共享库?

    我有一个项目 在子目录中包含 opencv 的预构建版本 例如 我的项目 CMakeLists txt src 第三者 CMakeLists txt 开放式CV 包括 库 我想链接位于third party目录中的opencv版本 我的问题
  • Visual Studio 2022 CMake 预设

    我在我的项目中使用 CMake 并开始探索 CMakePresets 的可能性 我设法创建了一个默认的 Windows 预设 目前我的 Windows 默认预设将 CMAKE BUILD TYPE 设置为调试 现在我想在左侧下拉列表中选择配

随机推荐

  • 问题集合 ---- linux 静态库和动态库

    本文转自多网址 xff0c 对作者表示感谢 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • 图解:什么是二叉排序树?

    点击关注上方 五分钟学算法 xff0c 设为 置顶或星标 xff0c 第一时间送达干货 转自景禹 景禹的写作风格还是一如既往的细腻 xff1a xff09 xff0c 欢迎关注他 以下为原文 今天我们谈一谈 二叉排序树 xff0c 一种你会
  • B 站疯传,堪称最强,10 大免费的白嫖网站

    点击上方 五分钟学算法 xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 来源 xff1a Python知识圈 如果你喜欢在 B 站学习的话 xff0c 可以经常看到一些介绍网站类的视频 xff0c 这些视频有不俗的播放量
  • 还敢搞黄色?4 个色情网站被一锅端,9 名福利姬被刑拘!

    点击上方 五分钟学算法 xff0c 选择 星标 公众号 重磅干货 xff0c 第一时间送达 来源 xff1a 扩展迷EXTFANS 9月4日 xff0c 据 64 江苏网警 通报 xff1a 今年3月份以来 xff0c 浙江丽水莲都警方根据
  • 为什么有人劝别选计算机专业?

    大家好 xff0c 我是程序员吴师兄 xff0c 一个坚持在 CSDN 日更原创的程序员 今天想和大家聊一聊为什么有人劝别选计算机专业 和大家说一句掏心窝的话 xff1a 直到 2021 年 xff0c 计算机专业依旧是寒门改变命运的一个最
  • 看完谷歌大佬的 LeetCode 刷题笔记,我马上去字节跳动面试!

    如果你刷 LeetCode 觉得吃力 那么一定需要这份谷歌大佬的 LeetCode 刷题笔记 微信搜索 五分钟学算法 xff0c 公众号回复 04 即可获取对应的下载链接 xff0c 以下是详细介绍 在这里推荐一个谷歌大佬的刷题笔记 每一道
  • 剑指 Offer 09. 用两个栈实现队列(视频讲解)

    一 题目描述 用两个栈实现一个队列 队列的声明如下 xff0c 请实现它的两个函数 appendTail 和 deleteHead xff0c 分别完成在队列尾部插入整数和在队列头部删除整数的功能 若队列中没有元素 xff0c delete
  • 刷到 LeetCode 这个评论,被笑到了

    大家好 xff0c 我是吴师兄 今天早上我在 LeetCode 第 141 号问题 环形链表 的评论区中发现了一个称得上是天秀的解法 xff0c 简直太骚气了 xff0c 忍不住分享给大家 首先给没有见过这道题目的小伙伴补充一下前置知识 x
  • Android JNI基础篇(一)

    Android JNI 基础篇 前言 JNI学习其实并不难 xff0c 在这里 xff0c 我将引导大家学习JNI的基础知识 xff0c 认真学完本教程 xff0c 你将更加坚信我说的话 来吧 xff0c 我们一起学习 xff01 JNI
  • ROS学习(三):消息通信过程

    主节点管理节点信息 xff0c 每个节点根据需要与其他节点进行连接和消息通信 在这里 xff0c 我们来看看最重要的主节点 节点 话题 服务和动作信息的过程 一 运行主节点 节点之间的消息通信当中 xff0c 管理连接信息的主节点是为使用R
  • HTTP Digest authentication(摘要认证)和HTTP basic Authorization(普通认证)用户登出注销的方法

    最近项目中需要对普通认证HTTP basic Authorization和摘要认证HTTP Digest authenticatio登录进行注销 搜索到有几篇文章号称ie xff0c Firefox chrome都可以可以注销 xff0c
  • POCO C++库学习和分析 -- 序

    POCO C 43 43 库学习和分析 序 1 POCO库概述 xff1a POCO是一个C 43 43 的开源库集 同一般的C 43 43 库相比 xff0c POCO的特点是提供了整一个应用框架 如果要做C 43 43 程序应用框架的快
  • 【ubuntu18+QT12+OpenCV4环境配置】

    ubuntu18 43 QT12 43 OpenCV4环境配置 前些天编译了最新版本opencv4 xff0c 但是电脑内还有个opencv3 2 xff0c 有时候二者共享链接库文件即libopencv so XX xff0c 之类的路径
  • Ubuntu无法使用浏览器上网

    1 可以更新一下浏览器 xff0c 打开终端 xff0c 输入 xff1a sudo apt get install firefox 如果你用的是其他浏览器可以吧后面的 firefox 改为其他浏览器 xff0c 如谷歌浏览器 xff1a
  • 浅析C++中struct和class的区别

    文章目录 C和C 43 43 中struct的区别C 43 43 中struct和class的区别 C和C 43 43 中struct的区别 struct最早是在C语言中出现的 xff0c 但在C语言中struct只是一种 用户自定义数据类
  • C语言头文件.h互相包含所引发的一系列错误C2143之类的解决方法

    本文可解决的问题 在一个头文件 h中定义一个结构体 在另一个 h文件中使用这个结构体引发错误C2143 语法错误 缺少 在 的前面 编译源文件 等莫名的报错头文件的交叉包含 即头文件a包含了头文件b 头文件b又包含了头文件a多个不同的头文件
  • 使用python进行http请求自动登录处理302跳转的问题

    一 问题背景 最近在做一个自动化业务处理的程序时 xff0c 需要完成对系统的自动登录 经过抓包测试只需要使用简单的post请求后收到的回包中包含cookie信息 xff0c 因此可以据此完成登录 程序设计思路为发送求到登录验证页面 xff
  • C# TCP/UDP网络通讯调试助手(含源码)

    C TCP UDP网络通讯调试助手 1 客户端界面 1 客户端界面 源码下载地址 xff1a https download csdn net download kingleitao 11927885
  • socketcan

    参考 lt lt Linux Can编程详解 gt gt CAN原理介绍 https www cnblogs com spoorer p 6649303 html 一 初始化工作 SocketCAN 中大部分的数据结构和函数在头文件 lin
  • vscode+cmake 实现C++项目的完整编译

    1 项目目录 span class token builtin class name span bin build CMakeLists txt include array 2d h common h swap h lib src arra