可以这样做吗?我以前有过github操作(PS2软件编译的linux环境(的经验
现在,我正试图从github操作为windows构建一个程序,但我不知道从哪里开始。
我需要设置mingw并构建程序(程序存储在一个代码::blocks项目中,我已经将项目文件转换为Makefile(
https://github.com/israpps/HDL-Batch-installer/
当然可以,为什么不能呢?也许更有用的是,我可以说,我使用以下两种方式之一为自己的几个项目做这件事:
- 要么使用wxWidgets二进制文件,即在Linux下使用系统包(Actions使用的Ubuntu环境为wx 3.0.5(,要么在MSW下下载二进制文件(我在那里使用MSVS为建筑下载二进制文件(。在这种情况下,您只需要
apt-get install
或curl
文件,然后构建应用程序 - 或者自己编译wxWidgets,如果你已经将其用作自己的Git子模块,这尤其有用,因为你还可以测试你在PR中使用的wx版本的更改。在这种情况下,您需要为wxWidgets本身添加一个构建步骤,这很简单,但我强烈建议缓存构建它的结果,因为否则它可能比构建自己的应用程序花费更长的时间——但缓存它效果很好;恢复高速缓存";在我刚刚看到的构建中,步骤只需要4个(这包括其他一些第三方库,而不仅仅是wx(
可以在Github Actions上构建一个wxWidgets项目,这是我自己刚刚完成的。
以下是一个公共Github项目,演示在Linux、macOS和Windows上使用CMake在Github Actions上构建一个简单的wxWidgets演示程序:https://github.com/saxbophone/wxwidgets-test
我使用CPM.cmake来查找wxWidgets——这个工具试图在系统上找到wxWidget的已安装副本,如果找不到已安装的副本,则从源代码克隆repo和构建。
这不是一个完全简单的过程,我对这个过程中的特定触发点有以下观察:
-
在macOS上使用g++编译器构建似乎不起作用(似乎某些Objective-C++代码没有得到正确解释((日志(
-
在Linux上构建需要安装GTK3和OpenGL的开发包,这一要求似乎没有记录在wxWidgets从源代码指令构建中。
-
在Windows上将wxWidgets构建为共享库(即DLL(会导致许多链接器问题,我通过指定项目始终使用CMake选项
DBUILD_SHARED_LIBS=OFF
构建静态库来避免这些问题。 -
wxWidgets程序的CMake目标需要设置CMake属性
WIN32
,否则,由于Windows区分GUI和控制台程序的方式,main()
将出现链接器错误:add_executable(demo WIN32 main.cpp)
-
在树中编译wxWidgets(即作为子项目(非常耗时,因此建议缓存依赖源代码和成功构建的依赖对象(就像我的示例项目一样(,以避免浪费构建信用。在测试时,wxWidgets包含大约527MB的压缩源代码和大约127MB的压缩构建对象。