Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move to VCPKG. #14

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 34 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,46 @@
name: Build Installer OMOD Plugin
name: Build Installer OMOD

on:
push:
branches: master
pull_request:
types: [opened, synchronize, reopened]

env:
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"

jobs:
build:
runs-on: windows-2022
steps:
- name: Build Installer OMOD Plugin
uses: ModOrganizer2/build-with-mob-action@master
# https://learn.microsoft.com/en-us/vcpkg/consume/binary-caching-github-actions-cache
- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');

- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
mo2-dependencies: cmake_common uibase
version: 6.7.0
modules:
cache: true

- uses: actions/checkout@v4

- name: "Set environmental variables"
shell: bash
run: |
echo "VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT" >> $GITHUB_ENV

- name: Configure Installer OMOD
shell: pwsh
run: |
cmake --preset vs2022-windows-standalone `
"-DCMAKE_PREFIX_PATH=${env:QT_ROOT_DIR}\msvc2019_64" `
"-DCMAKE_INSTALL_PREFIX=install"

- name: Build Installer OMOD
run: cmake --build vsbuild --config RelWithDebInfo --target INSTALL
6 changes: 0 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
# CMake 3.18 due to https://gitlab.kitware.com/cmake/cmake/-/issues/20764
cmake_minimum_required(VERSION 3.18)

if(DEFINED DEPENDENCIES_DIR)
include(${DEPENDENCIES_DIR}/modorganizer_super/cmake_common/mo2.cmake)
else()
include(${CMAKE_CURRENT_LIST_DIR}/../cmake_common/mo2.cmake)
endif()

# set globally as Nuget gets confused about ZERO_CHECK, ALL_BUILD and INSTALL otherwise
set(CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION "v4.8")

Expand Down
52 changes: 52 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"configurePresets": [
{
"errors": {
"deprecated": true
},
"hidden": true,
"name": "cmake-dev",
"warnings": {
"deprecated": true,
"dev": true
}
},
{
"toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"hidden": true,
"name": "vcpkg"
},
{
"binaryDir": "${sourceDir}/vsbuild",
"architecture": {
"strategy": "set",
"value": "x64"
},
"cacheVariables": {
"CMAKE_VS_NUGET_PACKAGE_RESTORE": {
"type": "BOOL",
"value": "ON"
},
"INSTALL_REQUIRES_VS_PACKAGE_RESTORE": {
"type": "BOOL",
"value": "ON"
}
},
"generator": "Visual Studio 17 2022",
"inherits": ["cmake-dev", "vcpkg"],
"name": "vs2022-windows",
"toolset": "v143"
},
{
"cacheVariables": {
"VCPKG_MANIFEST_FEATURES": {
"type": "STRING",
"value": "standalone"
}
},
"inherits": "vs2022-windows",
"name": "vs2022-windows-standalone"
}
],
"version": 4
}
12 changes: 8 additions & 4 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
cmake_minimum_required(VERSION 3.16)
# 3.23 for CMAKE_VS_NUGET_PACKAGE_RESTORE
cmake_minimum_required(VERSION 3.23)

find_package(mo2-cmake CONFIG REQUIRED)
find_package(mo2-uibase CONFIG REQUIRED)

# Dummy .NET library as VS_PACKAGE_REFERENCES doesn't work on C++/CLI projects yet
# Needs to be declared before cmake_common stuff is included as that polutes the environment and makes C# get compiled as C++
# This only mostly works - you need to build via Visual Studio or run `msbuild -t:restore installer_omod.sln` at least once before this will build via the command line due to https://gitlab.kitware.com/cmake/cmake/-/issues/20646
add_library(dummy_cs_project SHARED DummyCSFile.cs)
set_target_properties(dummy_cs_project PROPERTIES
LINKER_LANGUAGE CSharp
Expand All @@ -11,6 +14,7 @@ set_target_properties(dummy_cs_project PROPERTIES

add_library(installer_omod SHARED)
mo2_configure_plugin(installer_omod WARNINGS OFF CLI ON)
target_link_libraries(installer_omod PRIVATE mo2::uibase)

# I'd like to use get_target_property(source_files ${PROJECT_NAME} SOURCES) as
# globbing is naughty, but need to filter out the things that aren't relative to this directory.
Expand Down Expand Up @@ -46,7 +50,7 @@ target_compile_definitions(installer_omod PRIVATE "NOGDI")
# aren't pulled in. We do need it to build first, though.
add_dependencies(installer_omod dummy_cs_project)

mo2_install_target(installer_omod FOLDER)
mo2_install_plugin(installer_omod FOLDER)

install(
FILES
Expand All @@ -55,7 +59,7 @@ install(
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/ICSharpCode.SharpZipLib.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/System.Drawing.Common.dll"
"$<TARGET_FILE_DIR:${PROJECT_NAME}>/RtfPipe.dll"
DESTINATION "${MO2_INSTALL_PATH}/bin/plugins/installer_omod/"
DESTINATION bin/plugins/installer_omod/
)
install(
FILES "$<TARGET_PDB_FILE_DIR:${PROJECT_NAME}>/ICSharpCode.SharpZipLib.pdb"
Expand Down
22 changes: 11 additions & 11 deletions src/OMODFrameworkWrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@ using namespace cli;
#include <QTemporaryDir>
#include <QProgressDialog>

#include <imodinterface.h>
#include <imodlist.h>
#include <iplugingame.h>
#include <ipluginlist.h>
#include <igamefeatures.h>
#include <log.h>
#include <utility.h>
#include <registry.h>

#include <dataarchives.h>
#include <gameplugins.h>
#include <uibase/imodinterface.h>
#include <uibase/imodlist.h>
#include <uibase/iplugingame.h>
#include <uibase/ipluginlist.h>
#include <uibase/game_features/igamefeatures.h>
#include <uibase/log.h>
#include <uibase/utility.h>
#include <uibase/registry.h>

#include <uibase/game_features/dataarchives.h>
#include <uibase/game_features/gameplugins.h>

#include "implementations/CodeProgress.h"
#include "implementations/Logger.h"
Expand Down
2 changes: 1 addition & 1 deletion src/OMODFrameworkWrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <QProgressDialog>
#include <QStack>

#include <iplugininstaller.h>
#include <uibase/iplugininstaller.h>

#include "implementations/CodeProgress.h"
#include "QObject_unique_ptr.h"
Expand Down
2 changes: 1 addition & 1 deletion src/implementations/Logger.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

using namespace cli;

#include <log.h>
#include <uibase/log.h>

ref class Logger : OMODFramework::ILogger
{
Expand Down
6 changes: 3 additions & 3 deletions src/implementations/ScriptFunctions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
#include <QMessageBox>
#include <QScreen>

#include <iplugingame.h>
#include <ipluginlist.h>
#include <log.h>
#include <uibase/iplugingame.h>
#include <uibase/ipluginlist.h>
#include <uibase/log.h>

#include "../interop/QtDotNetConverters.h"
#include "../newstuff/rtfPopup.h"
Expand Down
2 changes: 1 addition & 1 deletion src/implementations/ScriptFunctions.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ using namespace cli;

#include <QWidget>

#include <imoinfo.h>
#include <uibase/imoinfo.h>

#include "../MessageBoxHelper.h"
#include "../QObject_unique_ptr.h"
Expand Down
4 changes: 2 additions & 2 deletions src/installerOmod.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
#include <QRegularExpression>
#include <QTemporaryFile>

#include <iplugingame.h>
#include <log.h>
#include <uibase/iplugingame.h>
#include <uibase/log.h>

#include "OMODFrameworkWrapper.h"

Expand Down
4 changes: 2 additions & 2 deletions src/installerOmod.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

#include <QTemporaryFile>

#include <iplugininstallercustom.h>
#include <ipluginfilemapper.h>
#include <uibase/iplugininstallercustom.h>
#include <uibase/ipluginfilemapper.h>

#include "OMODFrameworkWrapper.h"

Expand Down
2 changes: 1 addition & 1 deletion src/newstuff/namedialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include <QDialog>

#include <guessedvalue.h>
#include <uibase/guessedvalue.h>

#include "ui_namedialog.h"

Expand Down
15 changes: 15 additions & 0 deletions vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"features": {
"standalone": {
"description": "Build Standalone.",
"dependencies": ["mo2-cmake", "mo2-uibase"]
}
},
"vcpkg-configuration": {
"default-registry": {
"kind": "git",
"repository": "https://github.com/ModOrganizer2/vcpkg-registry",
"baseline": "d194ec4e14052784518d5e9f1c5ccac16de49c2c"
}
}
}
Loading