Files
cmake_common/README.md
T

3.7 KiB

MO2 CMake Common

This repository contains useful CMake macro and functions that are used to ease creating CMake configuration for most of MO2 repositories (e.g., uibase, plugin_python or ModOrganizer2 itself).

Getting Started

1. With VCPKG

Add MO2 VCPKG registry to your vcpkg-configuration.json:

{
  "default-registry": {
    "kind": "git",
    "repository": "https://github.com/Microsoft/vcpkg",
    "baseline": "f61a294e765b257926ae9e9d85f96468a0af74e7"
  },
  "registries": [
    {
      "kind": "git",
      "repository": "https://github.com/ModOrganizer2/vcpkg-registry",
      "baseline": "27d8adbfe9e4ce88a875be3a45fadab69869eb60",
      "packages": ["mo2-cmake"]
    }
  ]
}

Add mo2-cmake to your VCPKG dependencies (vcpkg.json) and then import the utilities with find_package in your CMake configuration:

find_package(mo2-cmake CONFIG REQUIRED)

2. Manually

Clone this repository somewhere and then include(mo2.cmake) in your CMake configuration files.

Usage

Be aware that using these utilities will automatically some (not too intrusive) global variable on your project.

For some functions to work properly, you should set CMAKE_INSTALL_PREFIX to a directory where ${CMAKE_INSTALL_PREFIX}/bin/ModOrganizer.exe can be found.

Importing the utilities will make the following variables available:

  • MO2_QT_VERSION - The Qt version used by MO2, as major.minor.patch.
  • MO2_QT_MAJOR_VERSION, MO2_QT_MINOR_VERSION and MO2_QT_PATCH_VERSION - Respectively the major, minor and patch version of Qt used by MO2.
  • MO2_PYTHON_VERSION - The Python version used by MO2 as major.minor (patch version should not be relevant).

All functions are prefixed by mo2_ and should not conflict with other existing functions.

Generic Utilities

  • mo2_set_if_not_defined - Set a variable to a given value if the variable is not defined.
  • mo2_add_subdirectories -
  • mo2_find_python_executable - Find Python executable.
  • mo2_find_git_hash - Find the hash of the current git HEAD.
  • mo2_find_qt_executable - Find a given Qt executable.
  • mo2_set_project_to_run_from_install - Configure the debug executable for a VS project.
  • mo2_add_filter - Add a source group filter.
  • mo2_deploy_qt_for_tests - Deploy Qt DLLs, etc., for tests.
  • mo2_deploy_qt - Deploy Qt DLLs for ModOrganizer2.
  • mo2_add_lupdate - Create a target to run Qt lupdate.
  • mo2_add_lrelease - Create a target to Qt lrelease.
  • mo2_add_translations - Add targets to generate translations for the given target.

C++ Utilities

TODO:

  • mo2_configure_warnings - Utility function configure warnings for a target.
  • mo2_configure_sources - Glob and configure sources, including Qt-related files (.ui, etc.) for a target.
  • mo2_configure_msvc - Set some MSVC-specific flag for a target.
  • (Deprecated) mo2_configure_target - Combine the above function + Extra stuff.
  • (Deprecated) mo2_configure_plugin
  • mo2_configure_tests - TO BE CHANGED
  • mo2_install_plugin - Install a plugin.

Python Utilities

  • mo2_python_uifiles - Add a target to generate .py files from .ui files.
  • mo2_python_pip_install - Install Python packages.
  • mo2_python_requirements - Install plugin requirements from a plugin-requirements.txt file, ready to ship.
  • mo2_configure_python_module - Configure a Python module plugin.
  • (Deprecated) mo2_configure_python_simple - Configure a Python single file plugin.
  • mo2_configure_python - Wrapper for the two above functions.