matrixcascade/PainterEngine

希望项目可以有一个CMakeLists.txt并添加Vscode + cmake + Mingw gcc配置环境的详细教程

Closed this issue · 6 comments

球球更新

希望关于不使用IDE的情况,可以组织好项目的结构,配置CMakeLists.txt并配套做出一个step by step的配置教程,然后直接就可以在克隆的git仓库下面新建一个文件夹放源代码直接用cmake编译,比如像下面那样的

$ git clone ......
$ mkdir src && cd src
# 编写完 main.c 之后回到仓库根目录
$ cd ..
$ mkdir build && cd build 
$ cmake .. -G "......"
$ cmake --build .

然后希望可以在配置教程中说明如果要自己编写main.c文件的话只要修改CMakeList.txt相应的add_execution就好了

萌新现状与困惑

萌新目前还在学习完C语言,一点点了解Makefile和cmake,想要结合第三方库来做些小实战开发的状态
真的感觉这个库不错,但苦于不知道该怎么上手(MingW gcc + Vscode + cmake),希望相关的教程可以翔实一点(XP)最好是手把手的那种(><)

下面是我的项目文件树

├─.vscode
├─include
│  └─PainterEngine
│      ├─core
│      ├─kernel
│      ├─platform
│      │  ├─modules
│      │  └─windows
│      └─runtime
├─lib
└─src

下面是我自己拜托chatGPT写的CMakeLists.txt

cmake_minimum_required(VERSION 3.0)

project(PainterEngine)

# 设置编译器参数
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")

# 添加头文件路径
include_directories(include)
# include_directories(include/PainterEngine/runtime)

# 添加源文件
file(GLOB_RECURSE LIB_SOURCES include/*.c)
file(GLOB_RECURSE APP_SOURCES src/*.c)

# 生成库
add_library(PainterEngine STATIC ${LIB_SOURCES})

# 设置库的输出路径
set_target_properties(PainterEngine PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib)

# 生成可执行文件
add_executable(pe ${APP_SOURCES})

# 链接第三方库
target_link_libraries(pe PainterEngine)

在执行这个cmake出来的makefile会出来inclue头文件路径的问题,不知道该怎么组织项目结构

image
尝试过修改include指令后面的路径,硬是通过了编译,但是在链接到可执行文件的时候出现问题

而且尝试使用仓库的Makefile来make了一下也出现了include的问题
image

而且尝试使用仓库的Makefile来make了一下也出现了include的问题 image

感谢作者提供的这个很好的开源库。

我有一个解决方案,到官网https://www.painterengine.com/下载【PainterEngine(源码-sources only)】解压这个压缩包,然后配置xmake.lua

target("libpe")
    set_kind("static")
    set_toolchains("gcc")
    add_files("core/*.c","kernel/*.c","platform/windows/*.c","platform/windows/*.cpp","runtime/*.c")
    add_defines("libpe")

同时将该xmake.lua放置到解压的源代码的根目录下,命令提示窗口执行 xmake -v 编译完成后到build目录下将libpe.lib改名为libpe.a同时将所有的*.c和*.cpp删除,只保留*.h文件并保证目录结构不变。将所有的*.h 和libpe.a 放置到mingw64\x86_64-w64-mingw32的include和lib目录下,编译过程中添加链接参数 -lpe -lwinmm -ld2d1 -lws2_32 -ldsound -lcomdlg32 -mwindows

enjoy!

而且尝试使用仓库的Makefile来make了一下也出现了include的问题 image

感谢作者提供的这个很好的开源库。

我有一个解决方案,到官网[https://www.painterengine.com/下载【PainterEngine(源码-sources](https://www.painterengine.com/%E4%B8%8B%E8%BD%BD%E3%80%90PainterEngine(%E6%BA%90%E7%A0%81-sources) only)】解压这个压缩包,然后配置xmake.lua

target("libpe")
    set_kind("static")
    set_toolchains("gcc")
    add_files("core/*.c","kernel/*.c","platform/windows/*.c","platform/windows/*.cpp","runtime/*.c")
    add_defines("libpe")

同时将该xmake.lua放置到解压的源代码的根目录下,命令提示窗口执行 xmake -v 编译完成后到build目录下将libpe.lib改名为libpe.a同时将所有的*.c和*.cpp删除,只保留*.h文件并保证目录结构不变。将所有的*.h 和libpe.a 放置到mingw64\x86_64-w64-mingw32的include和lib目录下,编译过程中添加链接参数 -lpe -lwinmm -ld2d1 -lws2_32 -ldsound -lcomdlg32 -mwindows

enjoy!

参考图片
libpe

CMake 主要是给有外部依赖的项目用的,pe没有任何外部依赖,其实是没什么必要的,写C一般我还是建议使用ide。

谢谢你!!非常详细

谢谢你们啦