Clion一个项目多个main()函数

本文介绍了如何为C和C++项目配置CMakeLists.txt文件,包括设置项目名称、C/C++标准、文件遍历及目标生成。适用于CMake初学者和需要管理多源文件的项目。

C语言项目,在CMakeLists.txt里添加

cmake_minimum_required(VERSION 3.17)
 
get_filename_component(ProjectId ${CMAKE_CURRENT_SOURCE_DIR} NAME)
string(REPLACE " " "_" ProjectId ${ProjectId})
project(${ProjectId} C)
 
set(CMAKE_C_STANDARD 11)
 
file(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.c")
foreach(file ${files})
    get_filename_component(name ${file} NAME)
    add_executable(${name} ${file})
endforeach()

C++语言项目,在CMakeLists.txt里添加

cmake_minimum_required(VERSION 3.19)
 
get_filename_component(ProjectId ${CMAKE_CURRENT_SOURCE_DIR} NAME)
string(REPLACE " " "_" ProjectId ${ProjectId})
project(algorithms) #项目名称
 
set(CMAKE_CXX_STANDARD 98) #使用c++98
 
file(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
foreach(file ${files})
    get_filename_component(name ${file} NAME)
    add_executable(${name} ${file})
endforeach()

原来CMakeLists.txt里面有其他代码,全部替换即可,替换完记得Reload下项目

每次新建.c或.cpp文件也要Reload项目

CLion 中,由于其默认使用 CMake 构建系统,并且一个项目通常只允许存在一个 `main` 函数入口点。若希望在同一项目中运行多个 `main` 函数,可以通过配置 CMakeLists.txt 文件,为每个包含 `main` 函数的源文件生成独立的可执行目标。 ### 配置方法 #### 方法一:手动添加多个可执行目标 可以在 `CMakeLists.txt` 中分别为每个包含 `main` 函数的 `.cpp` 文件定义一个独立的 `add_executable` 目标。例如: ```cmake add_executable(main1 main1.cpp) add_executable(main2 main2.cpp) ``` 这样,CMake 会分别编译 `main1.cpp` 和 `main2.cpp`,并生成两个独立的可执行文件 `main1` 和 `main2`。用户可以通过 CLion 的运行配置选择不同的目标进行运行 [^3]。 #### 方法二:自动遍历所有 `.cpp` 文件并生成可执行文件 如果项目中有多个 `main` 函数分布在不同的 `.cpp` 文件中,可以使用 CMake 的循环功能自动处理这些文件。修改 `CMakeLists.txt` 如下: ```cmake cmake_minimum_required(VERSION 3.21) project(MyProject) set(CMAKE_CXX_STANDARD 17) file(GLOB_RECURSE source_files *.cpp) foreach(src ${source_files}) get_filename_component(name ${src} NAME_WE) add_executable(${name} ${src}) endforeach() ``` 此配置将为每个 `.cpp` 文件生成一个以文件名为名的可执行目标,从而避免多个 `main` 函数之间的冲突 [^4]。 #### 方法三:使用子目录结构管理多个主程序 也可以通过创建多个子目录,每个子目录中包含一个 `main` 函数和对应的源文件,并在每个子目录中放置一个 `CMakeLists.txt` 文件用于定义该目录下的构建规则。根 `CMakeLists.txt` 中使用 `add_subdirectory()` 引入各个子目录。 例如: - 项目结构: ``` project/ ├── CMakeLists.txt ├── app1/ │ ├── main.cpp │ └── CMakeLists.txt └── app2/ ├── main.cpp └── CMakeLists.txt ``` - 根目录 `CMakeLists.txt` 内容: ```cmake cmake_minimum_required(VERSION 3.21) project(MyMultiMainProject) set(CMAKE_CXX_STANDARD 17) add_subdirectory(app1) add_subdirectory(app2) ``` - 子目录 `app1/CMakeLists.txt` 示例: ```cmake add_executable(app1 main.cpp) ``` 这种方法适用于项目结构较为复杂的情况,便于管理和维护 [^2]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值