首页 > 其他分享 >【CMake】使用CMake在Visual Stdudio编译资源文件和多目标编译

【CMake】使用CMake在Visual Stdudio编译资源文件和多目标编译

时间:2024-09-17 19:50:57浏览次数:11  
标签:CMakelists Stdudio CMake ASSETS SRCS 编译 cpp main

一、资源文件的编译

首先,我们的项目结构如下,存在图片和第三方库:
在这里插入图片描述
配置主 C M a k e l i s t s CMakelists CMakelists:

#需求的最低cmake程序版本
cmake_minimum_required(VERSION 3.12)

#本工程的名字
project(OpenGL)

#支持的C++版本
set(CMAKE_CXX_STANDARD 20)

#把需要拷贝的资源路径都放到ASSETS里
file(GLOB ASSETS "./assets" "thirdParty/libmysql.dll")

#把ASSETS指代的目录集合的内容,都拷贝到可执行目录文件下
file(COPY ${ASSETS} DESTINATION ${CMAKE_BINARY_DIR})

#搜索所有的cpp,加入SRCS变量中
aux_source_directory(. SRCS)

#将funcs文件夹添加为子文件夹
add_subdirectory(funcs) 

#本工程主程序文件及输出程序名称,生成exe
add_executable(glStudy ${SRCS})

#添加myFuncs链接库
target_link_libraries(glStudy myFuncs)

编译运行后:
打开相应目录的:\out\build\x64-Debug,可以图片和第三方库都被导拷贝到了可执行文件目录下
在这里插入图片描述

二、多目标编译

我们一个项目有多个 m a i n main main函数的时候,可以选择其中一个来运行。
加入新的 m a i n main main函数
在这里插入图片描述
代码如下:

#include<iostream>

int main() {

	std::cout << "main2执行了\n";

}

然后,修改 C M a k e l i s t s . t x t CMakelists.txt CMakelists.txt
在这里插入图片描述修改后:
在这里插入图片描述此时,在运行界面上存在两个选择项:
按需求选择其中的一个 m a i n . c p p main.cpp main.cpp运行即可。
在这里插入图片描述

分别调用,得到:
m a i n . c p p : main.cpp: main.cpp:
在这里插入图片描述
m a i n 2. c p p : main2.cpp: main2.cpp:
在这里插入图片描述

标签:CMakelists,Stdudio,CMake,ASSETS,SRCS,编译,cpp,main
From: https://blog.csdn.net/Antonio915/article/details/142309274

相关文章

  • 全网最简单最详细的反编译小程序教程
    一、准备工具小程序解密包(百度网盘)下载链接node.js提前下载,我上一个文章有教程二、获取wxapkg包在电脑在登录微信,找到存放小程序文件源代码的位置打开文件夹后一定要返回上一个文件打开Applet,删除所有的wx+数字的文件,确保等下找到最新运行的小程序文件,文件夹不用退出......
  • 信息学奥赛初赛天天练-91-CSP-S2023基础题3-编译命令、树的重心、拓扑排序、进制转换
    PDF文档公众号回复关键字:202409172023CSP-S选择题1单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)11以下哪个命令,能将一个名为main.cpp的C++源文件,编译并生成一个名为main的可执行文件?()Ag++-omainmain.cppBg++-omain.cppmainCg++......
  • IP地址判断-编译原理
    分析给定字符串是否是IP,我们先考虑IP地址如何构成a.b.c.d,其中\(a,b,c,d\)均为\(0\)到\(255\)之间的整数那么我们考虑设计代码框架,如果字符串是IP地址,返回True,否则返回Falseboolsolve(strings){}接下来考虑检查IP字符串的基本格式,包含以下规则所有字符均为阿拉伯数......
  • CMake构建学习笔记17-uriparser库的构建和使用
    在连续论述了几篇关于CMake如何使用的文章之后,笔者也是感觉被掏空了。接下来几篇就还是回到构建依赖库的问题上,容笔者花时间找到更好的主题来介绍更多关于CMake使用干货。如何有的读者自信已经很熟悉这方面的知识,可以进行跳过,在需要的时候再进行查阅。uriparser是一个严格遵循RFC......
  • Oliver编译安装(Windows10+VisualStudio2022)
    Oliver是一个开源的非线性视频编辑器。主要基于Qt和FFmpeg开发。前置条件电脑上需要的环境Qt(>=5.15)VisualStudio(2022,其他版也可)vcpkg软件安装安装Qt5.15令人糟糕的是,Qt如今变得不太容易安装。自从Qt5.15以后的版本,就取消了离线安装。所有的Qt后序版本就只能通......
  • day05_编译原理学习
    第四章语法分析和的计算和定义定义:被定义为从推导得到的串首符号的集合(其中是任意的文法符号)。算法:求解的方法:不断应用以下规则,直到没有新的终结符号或空集被加入到任何集合中为止。1)如果X是一个终结符号,那么;2)如果X是一个非终结符,且是一个产生式,在中且在所有的中......
  • day07_编译原理学习
    第四章语法分析LR文法的概述LR文法的概念LR文法是最大的,可以构造出相应移入-归约语法分析器的文法类L:对输入进行从左到右的扫描R:反向构造出一个最右推导序列LR(k)分析需要向前查看k个输入符号的LR分析k=0和k=1这两种情况具有实践意义,当省略k时,k=1LR分析法的......
  • 一个简单的交叉编译riscv的makefile脚本
    为了编写一个使用特定交叉编译工具链(在这个例子中是`riscv64-unknown-linux-gnu-`)来编译`hello.c`的Makefile脚本,你需要设置`CROSS_COMPILE`变量,并在编译命令中使用这个变量来指定交叉编译器的路径。下面是一个简单的Makefile示例:```makefile#定义交叉编译工具链的前缀CROSS_COM......
  • cefsharp.H264.x64.109(88、84、79)可播放视频包免费编译版
    一、下载网址:https://www.nuget.org/packages/CefSharp.H264.x64/109.1.110?_src=templateDownloadpackage(82.59MB)如果是直接下载的cefsharp.h264.x64.109.1.110.nupkg1、用解压缩软件,将这个文件解压缩2、在解压缩目录中(cefshap\cefsharp.h264.x64.109.1.110\cef),再次解压......
  • GCC安全编译选项
    以CMake为例,给出安全编译选项的定义。关闭RPATH特性。set(CMAKE_SKIP_RPATHTRUE)开启栈保护。set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-fstack-protector-strong")或者set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-fstack-protector-all")开启GOT表保护。set(CM......