当前位置:网站首页>Clion项目中运行多个main函数
Clion项目中运行多个main函数
2022-06-26 02:31:00 【老白白()】
被clion默认不支持多main函数问题困扰许久, 今天终于彻底解决, 做个记录也希望能帮到有类似问题的朋友。
为什么会有这个问题
首先我们来看cmakelist这个文件
前三行是自动生成的项目的一些信息, 我们要看的就是add_executable这一句
它的形式类似于
add_executable(projectName file1.h file1.c·······)
第一个是项目名, 其它的都是头文件和源文件的文件名. 问题就出在这里, 一个项目中只需要一个main函数就够了, 其它的都可以看作是为main函数写的库, add_executable就是编译括号里面出现的所有的文件并以此创建一个exe文件. 所以被添加进add_executable中的全部文件中只能出现一个main函数.
完美的解决方案
那如何运行多个main函数呢?
我们在用dev这样的工具时会发现它为每一个cpp文件都创建了exe文件, 所以我们要做的事其实就是想办法为每一个cpp文件都创建exe文件.
比如有两个文件main1.cpp, main2.cpp
add_executable(ProjectName main1.cpp)
add_executable(ProjectName main2.cpp)
这样它就有两条编译路径了, 此时main1和main2都可以单独编译并生成exe文件
但这样我们每次新建文件都要去配置文件里面加上这么一句, 未免太麻烦了
这时可以用cmakelist的语法来完成自动化
cmake_minimum_required(VERSION 3.21)
project(C__Workplace)
set(CMAKE_CXX_STANDARD 14)#前三行不用改
#递归遍历所有的cpp文件
file (GLOB_RECURSE files *.cpp)
#将所有的cpp文件单独生成可执行文件
foreach (file ${files})
string(REGEX REPLACE ".+/(.+)\\..*" "\\1" exe ${file})
add_executable (${exe} ${file})
message (\ \ \ \ --\ src/${exe}.cpp\ will\ be\ compiled\ to\ bin/${exe})
endforeach ()
记得要开启cmakelist的自动更新, 以及在新建文件时取消勾选"Add to targets"(意思是将这个文件添加到当前编译路径中).
还有注意每次新建文件后, 要在项目文件栏右键选择reload project.
至此Clion就被我们从一个专业的项目开发工具改造成了一个即写即用的脚本撰写工具, 非常适合只是拿c++来刷题的人.
边栏推荐
- UTONMOS坚持“藏品、版权”双优原则助力传统文化高质量发展
- The programmer's eight-year salary change has made netizens envious: you pay me one year's salary per month
- 用指南针交易股票安全吗?指南针是如何交易股票的,需要开户吗
- 文献阅读---优化RNA-seq研究以研究除草剂耐药性(综述)
- Analysis and optimization of ue5 global illumination system lumen
- 我在中山,到哪里开户比较好?网上开户是否安全么?
- 工作室第3次HarmonyOS培训笔记
- 2021-08-04
- Business process diagram design
- 基于 ovarian 数据集 进行生存分析
猜你喜欢
随机推荐
Sloppy formula
Teach you to quickly record sounds on PC web pages as audio files
文献阅读---优化RNA-seq研究以研究除草剂耐药性(综述)
What can Arthas do for you?
Survival analysis based on ovarian data set
Add console programs in UE
2022-06-25: given a positive number n, it means that there are tasks 0~n-1. Given an array of length N, time[i] means the time when task I is completed. Given a two-dimensional array matrix, matrix[j]
Deep understanding of distributed cache design
Drawing structure diagram with idea
喜讯 | 祝贺Apache Linkis(incubating) 社区新增5位Committer
GD32 ADC采集电压
Install development cross process communication
golang--channal与select
Which securities company should I choose to open an account online? Is it safe to open an account online?
Record a torture bug caused by restcontrol and controller
分布式电商项目 谷粒商城 学习笔记<3>
网络PXE启动WinPE,支持UEFI和LEGACY引导
Fresh graduates talk about their graduation stories
使用 AnnotationDbi 转换 R 中的基因名称
Redis classic 20 questions






![[机器翻译]—BLEU值的计算](/img/c3/8f98db33eb0ab5a016621d21d971e4.png)


