1-5 代码移植clion【Clion同一工程编译多个文件(含main函数)】【windows下运行Clion编译出来的exe文件】【Clion移植代码报错】

文章目录

  • 0 - 前言
  • 1 - Clion同一工程编译多个文件(含main函数)
  • 2 - 运行Clion编译出来的exe文件
  • 3 - Clion移植代码报错

0 - 前言

这个C++百万并发网络通信的项目本身是VS平台下编写,但是我很喜欢JetBrains系列的IDE,所以想把代码移植到Clion中。

但是网上关于Clion代码移植的资料并不是很多,在查询以后,总结成本文

1 - Clion同一工程编译多个文件(含main函数)

一个很现实的问题是Clion使用Cmake编译,Cmake会生成一个CmakeList文件。

通过修改CmakeList文件就能实现在一个工程下编译多个包含main函数的文件

参考:CLion工程中只能有一个main函数 &&怎么同时编写多个main函数的C文件

如果不想每次编译新的文件就手动修改CmakeList的话,推荐Clion的一个插件:C/C++ Single File Execution

1-5 代码移植clion【Clion同一工程编译多个文件(含main函数)】【windows下运行Clion编译出来的exe文件】【Clion移植代码报错】_第1张图片

安装上这个插件以后,在新建的cpp文件中只要【右键】-【add executable for single c/cpp file】就能自动实现修改CmakeList,最后只要在CmakeList中reload一下就可以编译文件了

1-5 代码移植clion【Clion同一工程编译多个文件(含main函数)】【windows下运行Clion编译出来的exe文件】【Clion移植代码报错】_第2张图片

编译后的exe文件,放在这个文件夹中:

1-5 代码移植clion【Clion同一工程编译多个文件(含main函数)】【windows下运行Clion编译出来的exe文件】【Clion移植代码报错】_第3张图片

2 - 运行Clion编译出来的exe文件

之前从VS将代码移植到Clion上,编译出来的exe文件不能在Windows上点击执行,这还是因为Clion使用Cmake编译的原因,在windows上exe文件需要libgcc才能运行

因此,需要在CmakeList文件中加入如下语句:

set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")

参考:CLion编译的exe文件无法运行

1-5 代码移植clion【Clion同一工程编译多个文件(含main函数)】【windows下运行Clion编译出来的exe文件】【Clion移植代码报错】_第4张图片

然后,在cmake-build-debug文件夹中找到编译后的exe文件,打开即可运行

3 - Clion移植代码报错

错误1: undefined reference to `__imp_WSAStartup’

Solution:CmakeList中加入如下代码:

link_libraries(ws2_32)

1-5 代码移植clion【Clion同一工程编译多个文件(含main函数)】【windows下运行Clion编译出来的exe文件】【Clion移植代码报错】_第5张图片

参考:

VSCode网络编程出现undefined reference to `__imp_WSAStartup’等错误

你可能感兴趣的:(C++学习,C++百万并发网络通信,c++,cmake)