Compare commits
6 commits
6cd935ba3e
...
077b153953
Author | SHA1 | Date | |
---|---|---|---|
077b153953 | |||
024d6a9243 | |||
b33ae784ca | |||
c0deba3b2b | |||
c14dfbea32 | |||
e57a781c01 |
20 changed files with 141 additions and 30 deletions
9
BUILD.md
9
BUILD.md
|
@ -22,6 +22,7 @@ The project will be built using VCPKG and MSVC
|
||||||
* Qt 6.8.3 or higher, with MSVC toolchain
|
* Qt 6.8.3 or higher, with MSVC toolchain
|
||||||
* CMake
|
* CMake
|
||||||
* Git (for cloning the repo, optional)
|
* Git (for cloning the repo, optional)
|
||||||
|
* QScintilla already built (see [docs/qscintilla.md](./docs/qscintilla.md)) *\*likely temporary\**
|
||||||
|
|
||||||
To start, clone the repository:
|
To start, clone the repository:
|
||||||
|
|
||||||
|
@ -37,10 +38,14 @@ Now, generate the build files with cmake via the vcpkg preset:
|
||||||
|
|
||||||
cmake -Bbuild . --preset vcpkg
|
cmake -Bbuild . --preset vcpkg
|
||||||
|
|
||||||
Then, finally, build in release mode:
|
Then, finally, build in release mode\*:
|
||||||
|
|
||||||
cmake --build build --config Release
|
cmake --build build --config Release
|
||||||
|
|
||||||
The compiled binaries should then be placed in `./build/bin/` and should be ready for redistribution without any further work.
|
The compiled binaries should then be placed in `./build/bin/` and should be ready for redistribution without any further work.
|
||||||
|
|
||||||
If any of the compilation steps fail, or the binaries fail to execute, please create an issue so that this can be corrected.
|
If any of the compilation steps fail, or the binaries fail to execute, please create an issue so that this can be corrected.
|
||||||
|
|
||||||
|
\* Release mode is necessary as debug mode copies DLLs that are not linked to the output binary
|
||||||
|
|
||||||
|
DEVELOPER NOTE: AKA Not for you. If you get CUSTOM COMMAND BUILD errors just keep rerunning build
|
|
@ -4,7 +4,7 @@ project(openblocks VERSION 0.1.0)
|
||||||
set(OpenGL_GL_PREFERENCE "GLVND")
|
set(OpenGL_GL_PREFERENCE "GLVND")
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
add_compile_options(/W4 /WX)
|
add_compile_options(/W4)
|
||||||
else()
|
else()
|
||||||
add_compile_options(-Wall -Wextra -pedantic -Wno-unused-parameter)
|
add_compile_options(-Wall -Wextra -pedantic -Wno-unused-parameter)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -13,5 +13,5 @@ add_executable(autogen
|
||||||
)
|
)
|
||||||
|
|
||||||
set_target_properties(autogen PROPERTIES OUTPUT_NAME "autogen")
|
set_target_properties(autogen PROPERTIES OUTPUT_NAME "autogen")
|
||||||
target_link_libraries(autogen -lclang)
|
target_link_libraries(autogen ${CLANG_LIBRARY})
|
||||||
target_include_directories(autogen PUBLIC "src" ${CLANG_INCLUDE_DIRS})
|
target_include_directories(autogen PUBLIC "src" ${CLANG_INCLUDE_DIR})
|
|
@ -12,6 +12,7 @@
|
||||||
#include "object/codegen.h"
|
#include "object/codegen.h"
|
||||||
#include "data/analysis.h"
|
#include "data/analysis.h"
|
||||||
#include "data/codegen.h"
|
#include "data/codegen.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
// namespace data {
|
// namespace data {
|
||||||
// #include "data/analysis.h"
|
// #include "data/analysis.h"
|
||||||
|
@ -22,13 +23,17 @@ namespace fs = std::filesystem;
|
||||||
|
|
||||||
// https://clang.llvm.org/docs/LibClang.html
|
// https://clang.llvm.org/docs/LibClang.html
|
||||||
int processHeader(fs::path srcRoot, fs::path srcPath, fs::path outPath) {
|
int processHeader(fs::path srcRoot, fs::path srcPath, fs::path outPath) {
|
||||||
const char* cargs[] = { "-x", "c++", "-I", srcRoot.c_str(), "-D__AUTOGEN__", 0 };
|
std::string srcRootStr = string_of(srcRoot);
|
||||||
|
std::string srcPathStr = string_of(srcPath);
|
||||||
|
std::string outPathStr = string_of(outPath);
|
||||||
|
|
||||||
|
const char* cargs[] = { "-xc++", "-std=c++17", "-I", srcRootStr.c_str(), "-D__AUTOGEN__", 0 };
|
||||||
// THANK YOU SO MUCH THIS STACKOVERFLOW ANSWER IS SO HELPFUL
|
// THANK YOU SO MUCH THIS STACKOVERFLOW ANSWER IS SO HELPFUL
|
||||||
// https://stackoverflow.com/a/59206378/16255372
|
// https://stackoverflow.com/a/59206378/16255372
|
||||||
CXIndex index = clang_createIndex(0, 0);
|
CXIndex index = clang_createIndex(0, 0);
|
||||||
CXTranslationUnit unit = clang_parseTranslationUnit(
|
CXTranslationUnit unit = clang_parseTranslationUnit(
|
||||||
index,
|
index,
|
||||||
srcPath.c_str(), cargs, 5,
|
srcPathStr.c_str(), cargs, 5,
|
||||||
nullptr, 0,
|
nullptr, 0,
|
||||||
CXTranslationUnit_None);
|
CXTranslationUnit_None);
|
||||||
|
|
||||||
|
@ -55,15 +60,16 @@ int processHeader(fs::path srcRoot, fs::path srcPath, fs::path outPath) {
|
||||||
enum_::AnalysisState enumAnlyState;
|
enum_::AnalysisState enumAnlyState;
|
||||||
|
|
||||||
fs::path relpath = fs::relative(srcPath, srcRoot);
|
fs::path relpath = fs::relative(srcPath, srcRoot);
|
||||||
printf("[AUTOGEN] Processing file %s...\n", relpath.c_str());
|
std::string relpathStr = string_of(relpath);
|
||||||
object::analyzeClasses(cursor, srcRoot, &objectAnlyState);
|
printf("[AUTOGEN] Processing file %s...\n", relpathStr.c_str());
|
||||||
data::analyzeClasses(cursor, srcRoot, &dataAnlyState);
|
object::analyzeClasses(cursor, srcRootStr, &objectAnlyState);
|
||||||
enum_::analyzeClasses(cursor, srcRoot, &enumAnlyState);
|
data::analyzeClasses(cursor, srcRootStr, &dataAnlyState);
|
||||||
|
enum_::analyzeClasses(cursor, srcRootStr, &enumAnlyState);
|
||||||
|
|
||||||
fs::create_directories(outPath.parent_path()); // Make sure generated dir exists before we try writing to it
|
fs::create_directories(outPath.parent_path()); // Make sure generated dir exists before we try writing to it
|
||||||
|
|
||||||
printf("[AUTOGEN] Generating file %s...\n", relpath.c_str());
|
printf("[AUTOGEN] Generating file %s...\n", relpathStr.c_str());
|
||||||
std::ofstream outStream(outPath);
|
std::ofstream outStream(outPathStr);
|
||||||
|
|
||||||
if (!objectAnlyState.classes.empty() || !dataAnlyState.classes.empty()) {
|
if (!objectAnlyState.classes.empty() || !dataAnlyState.classes.empty()) {
|
||||||
outStream << "/////////////////////////////////////////////////////////////////////////////////////////\n";
|
outStream << "/////////////////////////////////////////////////////////////////////////////////////////\n";
|
||||||
|
@ -72,15 +78,15 @@ int processHeader(fs::path srcRoot, fs::path srcPath, fs::path outPath) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto& [_, clazz] : objectAnlyState.classes) {
|
for (auto& [_, clazz] : objectAnlyState.classes) {
|
||||||
object::writeCodeForClass(outStream, relpath, clazz);
|
object::writeCodeForClass(outStream, relpathStr, clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto& [_, clazz] : dataAnlyState.classes) {
|
for (auto& [_, clazz] : dataAnlyState.classes) {
|
||||||
data::writeCodeForClass(outStream, relpath, clazz);
|
data::writeCodeForClass(outStream, relpathStr, clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto& [_, clazz] : enumAnlyState.classes) {
|
for (auto& [_, clazz] : enumAnlyState.classes) {
|
||||||
enum_::writeCodeForClass(outStream, relpath, clazz);
|
enum_::writeCodeForClass(outStream, relpathStr, clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
outStream.close();
|
outStream.close();
|
||||||
|
|
|
@ -162,7 +162,7 @@ static void processClass(CXCursor cur, AnalysisState* state, std::string classNa
|
||||||
|
|
||||||
anly.name = className;
|
anly.name = className;
|
||||||
anly.baseClass = baseClass;
|
anly.baseClass = baseClass;
|
||||||
anly.headerPath = headerPath;
|
anly.headerPath = string_of(headerPath);
|
||||||
|
|
||||||
// Add misc flags and options
|
// Add misc flags and options
|
||||||
auto instanceDef = findAnnotation(cur, "OB::def_inst");
|
auto instanceDef = findAnnotation(cur, "OB::def_inst");
|
||||||
|
|
|
@ -108,4 +108,8 @@ std::optional<std::string> findAnnotation(CXCursor cur, std::string annotationNa
|
||||||
return CXChildVisit_Break;
|
return CXChildVisit_Break;
|
||||||
});
|
});
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string string_of(std::filesystem::path path) {
|
||||||
|
return path.string();
|
||||||
}
|
}
|
|
@ -5,6 +5,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
typedef std::function<CXChildVisitResult(CXCursor cursor, CXCursor parent)> X_CXCursorVisitor;
|
typedef std::function<CXChildVisitResult(CXCursor cursor, CXCursor parent)> X_CXCursorVisitor;
|
||||||
|
|
||||||
|
@ -19,4 +20,6 @@ std::string x_clang_toString(CXString string);
|
||||||
// "name": "Hello!", "world": "Test", "read_only": ""
|
// "name": "Hello!", "world": "Test", "read_only": ""
|
||||||
std::map<std::string, std::string> parseAnnotationString(std::string src);
|
std::map<std::string, std::string> parseAnnotationString(std::string src);
|
||||||
|
|
||||||
std::optional<std::string> findAnnotation(CXCursor cur, std::string annotationName);
|
std::optional<std::string> findAnnotation(CXCursor cur, std::string annotationName);
|
||||||
|
|
||||||
|
std::string string_of(std::filesystem::path path);
|
42
cmake/FindClang.cmake
Normal file
42
cmake/FindClang.cmake
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
# Modified from QGIS' FindQScintilla.cmake by Thomas Moenicke, Larry Schaffer
|
||||||
|
|
||||||
|
add_library(Clang::Clang UNKNOWN IMPORTED)
|
||||||
|
|
||||||
|
FIND_PATH(CLANG_INCLUDE_DIR
|
||||||
|
NAMES clang-c/Index.h
|
||||||
|
PATHS
|
||||||
|
$ENV{LIB_DIR}/include
|
||||||
|
/usr/local/include
|
||||||
|
/usr/include
|
||||||
|
${VCPKG_INSTALLED_DIR}/x64-windows/include
|
||||||
|
"C:/Program Files/LLVM/include"
|
||||||
|
PATH_SUFFIXES ${CLANG_PATH_SUFFIXES}
|
||||||
|
)
|
||||||
|
|
||||||
|
set(CLANG_LIBRARY_NAMES
|
||||||
|
libclang
|
||||||
|
clang
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(CLANG_LIBRARY
|
||||||
|
NAMES ${CLANG_LIBRARY_NAMES}
|
||||||
|
PATHS
|
||||||
|
$ENV{LIB_DIR}/lib
|
||||||
|
/usr/local/lib
|
||||||
|
/usr/lib
|
||||||
|
${VCPKG_INSTALLED_DIR}/x64-windows/lib
|
||||||
|
"C:/Program Files/LLVM/lib"
|
||||||
|
)
|
||||||
|
|
||||||
|
get_filename_component(CLANG_LIB_DIR ${CLANG_LIBRARY} DIRECTORY)
|
||||||
|
list(TRANSFORM CLANG_LIBRARY_NAMES APPEND ".dll" OUTPUT_VARIABLE CLANG_DLL_NAMES)
|
||||||
|
|
||||||
|
find_file(CLANG_DLLS
|
||||||
|
NAMES ${CLANG_DLL_NAMES}
|
||||||
|
PATHS
|
||||||
|
$ENV{LIB_DIR}/bin
|
||||||
|
/usr/local/bin
|
||||||
|
/usr/bin
|
||||||
|
${VCPKG_INSTALLED_DIR}/x64-windows/bin
|
||||||
|
"C:/Program Files/LLVM/bin"
|
||||||
|
)
|
|
@ -1,5 +1,12 @@
|
||||||
# Modified from QGIS' FindQScintilla.cmake by Thomas Moenicke, Larry Schaffer
|
# Modified from QGIS' FindQScintilla.cmake by Thomas Moenicke, Larry Schaffer
|
||||||
|
|
||||||
|
add_library(QScintilla::QScintilla UNKNOWN IMPORTED)
|
||||||
|
|
||||||
|
### NECESSARY TO PREVENT staticMetaObject ERROR!!! See qscintilla.prf AKA qmake config
|
||||||
|
if(WIN32)
|
||||||
|
add_compile_definitions(QSCINTILLA_DLL)
|
||||||
|
endif()
|
||||||
|
|
||||||
FIND_PATH(QSCINTILLA_INCLUDE_DIR
|
FIND_PATH(QSCINTILLA_INCLUDE_DIR
|
||||||
NAMES Qsci/qsciglobal.h
|
NAMES Qsci/qsciglobal.h
|
||||||
PATHS
|
PATHS
|
||||||
|
@ -7,6 +14,7 @@ FIND_PATH(QSCINTILLA_INCLUDE_DIR
|
||||||
$ENV{LIB_DIR}/include
|
$ENV{LIB_DIR}/include
|
||||||
/usr/local/include
|
/usr/local/include
|
||||||
/usr/include
|
/usr/include
|
||||||
|
${VCPKG_INSTALLED_DIR}/x64-windows/include
|
||||||
PATH_SUFFIXES ${QSCINTILLA_PATH_SUFFIXES}
|
PATH_SUFFIXES ${QSCINTILLA_PATH_SUFFIXES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -29,4 +37,20 @@ PATHS
|
||||||
/usr/local/lib
|
/usr/local/lib
|
||||||
/usr/local/lib/qt${QT_VERSION_MAJOR}
|
/usr/local/lib/qt${QT_VERSION_MAJOR}
|
||||||
/usr/lib
|
/usr/lib
|
||||||
|
${VCPKG_INSTALLED_DIR}/x64-windows/lib
|
||||||
|
)
|
||||||
|
|
||||||
|
get_filename_component(QSCINTILLA_LIB_DIR ${QSCINTILLA_LIBRARY} DIRECTORY)
|
||||||
|
list(TRANSFORM QSCINTILLA_LIBRARY_NAMES APPEND ".dll" OUTPUT_VARIABLE QSCINTILLA_DLL_NAMES)
|
||||||
|
|
||||||
|
find_file(QSCINTILLA_DLLS
|
||||||
|
NAMES ${QSCINTILLA_DLL_NAMES}
|
||||||
|
PATHS
|
||||||
|
"${QT_LIBRARY_DIR}"
|
||||||
|
$ENV{LIB_DIR}/lib
|
||||||
|
/usr/local/lib
|
||||||
|
/usr/local/lib/qt${QT_VERSION_MAJOR}
|
||||||
|
/usr/lib
|
||||||
|
${QSCINTILLA_LIB_DIR}
|
||||||
|
${VCPKG_INSTALLED_DIR}/x64-windows/lib
|
||||||
)
|
)
|
|
@ -14,6 +14,7 @@ include_directories(${Stb_INCLUDE_DIR})
|
||||||
# PkgConfig packages
|
# PkgConfig packages
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(LUAJIT REQUIRED luajit)
|
pkg_check_modules(LUAJIT REQUIRED luajit)
|
||||||
|
link_directories(${LUAJIT_LIBRARY_DIRS})
|
||||||
|
|
||||||
# Run autogen
|
# Run autogen
|
||||||
file(GLOB_RECURSE AUTOGEN_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/src" "src/objects/*.h" "src/datatypes/*.h" "src/enum/*.h")
|
file(GLOB_RECURSE AUTOGEN_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/src" "src/objects/*.h" "src/datatypes/*.h" "src/enum/*.h")
|
||||||
|
@ -28,7 +29,7 @@ foreach (SRC ${AUTOGEN_SOURCES})
|
||||||
OUTPUT "${OUT_PATH}"
|
OUTPUT "${OUT_PATH}"
|
||||||
DEPENDS autogen
|
DEPENDS autogen
|
||||||
DEPENDS "${SRC_PATH}"
|
DEPENDS "${SRC_PATH}"
|
||||||
COMMAND "${CMAKE_BINARY_DIR}/autogen/autogen" "${CMAKE_CURRENT_SOURCE_DIR}/src" "${SRC_PATH}" "${OUT_PATH}"
|
COMMAND "$<TARGET_FILE:autogen>" "${CMAKE_CURRENT_SOURCE_DIR}/src" "${SRC_PATH}" "${OUT_PATH}"
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND AUTOGEN_OUTS "${OUT_PATH}")
|
list(APPEND AUTOGEN_OUTS "${OUT_PATH}")
|
||||||
|
@ -42,8 +43,9 @@ file(GLOB_RECURSE SOURCES "src/*.cpp" "src/*.h")
|
||||||
list(APPEND SOURCES ${AUTOGEN_OUTS})
|
list(APPEND SOURCES ${AUTOGEN_OUTS})
|
||||||
add_library(openblocks STATIC ${SOURCES})
|
add_library(openblocks STATIC ${SOURCES})
|
||||||
set_target_properties(openblocks PROPERTIES OUTPUT_NAME "openblocks")
|
set_target_properties(openblocks PROPERTIES OUTPUT_NAME "openblocks")
|
||||||
|
target_link_directories(openblocks PUBLIC ${LUAJIT_LIBRARY_DIRS})
|
||||||
target_link_libraries(openblocks ${GLEW_LIBRARIES} ${LUAJIT_LIBRARIES} OpenGL::GL ReactPhysics3D::ReactPhysics3D pugixml::pugixml)
|
target_link_libraries(openblocks ${GLEW_LIBRARIES} ${LUAJIT_LIBRARIES} OpenGL::GL ReactPhysics3D::ReactPhysics3D pugixml::pugixml)
|
||||||
target_include_directories(openblocks PUBLIC "src" "../include" ${LUAJIT_INCLUDE_DIR})
|
target_include_directories(openblocks PUBLIC "src" "../include" ${LUAJIT_INCLUDE_DIRS})
|
||||||
add_dependencies(openblocks autogen_build autogen)
|
add_dependencies(openblocks autogen_build autogen)
|
||||||
|
|
||||||
# Windows-specific dependencies
|
# Windows-specific dependencies
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <pugixml.hpp>
|
#include <pugixml.hpp>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
Color3::Color3(float r, float g, float b) : r(std::clamp(r, 0.f, 1.f)), g(std::clamp(g, 0.f, 1.f)), b(std::clamp(b, 0.f, 1.f)) {};
|
Color3::Color3(float r, float g, float b) : r(std::clamp(r, 0.f, 1.f)), g(std::clamp(g, 0.f, 1.f)), b(std::clamp(b, 0.f, 1.f)) {};
|
||||||
Color3::Color3(const glm::vec3& vec) : r(std::clamp(vec.x, 0.f, 1.f)), g(std::clamp(vec.y, 0.f, 1.f)), b(std::clamp(vec.z, 0.f, 1.f)) {};
|
Color3::Color3(const glm::vec3& vec) : r(std::clamp(vec.x, 0.f, 1.f)), g(std::clamp(vec.y, 0.f, 1.f)), b(std::clamp(vec.z, 0.f, 1.f)) {};
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
#include "error/data.h"
|
#include "error/data.h"
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
#include "variant.h" // IWYU pragma: keep
|
#include "variant.h" // IWYU pragma: keep
|
||||||
#include <luajit-2.1/lua.h>
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
#include "objects/base/instance.h"
|
#include "objects/base/instance.h"
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
#include "variant.h"
|
#include "variant.h"
|
||||||
#include "lua.h"
|
#include "lua.h"
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <luajit-2.1/lauxlib.h>
|
|
||||||
#include <luajit-2.1/lua.h>
|
|
||||||
#include <pugixml.hpp>
|
#include <pugixml.hpp>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
|
@ -5,8 +5,9 @@
|
||||||
#include "error/data.h"
|
#include "error/data.h"
|
||||||
#include <glm/ext/vector_float3.hpp>
|
#include <glm/ext/vector_float3.hpp>
|
||||||
#include <glm/geometric.hpp>
|
#include <glm/geometric.hpp>
|
||||||
|
#include <reactphysics3d/mathematics/Vector3.h>
|
||||||
|
|
||||||
namespace reactphysics3d { class Vector3; };
|
// namespace reactphysics3d { class Vector3; };
|
||||||
|
|
||||||
class DEF_DATA Vector3 {
|
class DEF_DATA Vector3 {
|
||||||
AUTOGEN_PREAMBLE_DATA
|
AUTOGEN_PREAMBLE_DATA
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <luajit-2.1/luajit.h>
|
#include <luajit.h>
|
||||||
#include <luajit-2.1/lauxlib.h>
|
#include <lauxlib.h>
|
||||||
#include <luajit-2.1/lualib.h>
|
#include <lualib.h>
|
||||||
#include <luajit-2.1/lua.h>
|
#include <lua.h>
|
||||||
}
|
}
|
|
@ -1,5 +1,7 @@
|
||||||
#include "defaultmeshes.h"
|
#include "defaultmeshes.h"
|
||||||
|
|
||||||
|
#pragma warning( disable : 4305 )
|
||||||
|
|
||||||
static float CUBE_VERTICES[] = {
|
static float CUBE_VERTICES[] = {
|
||||||
// positions // normals // texture coords
|
// positions // normals // texture coords
|
||||||
0.5, -0.5, -0.5, -0.0, -0.0, -1.0, 1.0, 0.0,
|
0.5, -0.5, -0.5, -0.0, -0.0, -1.0, 1.0, 0.0,
|
||||||
|
|
15
docs/qscintilla.md
Normal file
15
docs/qscintilla.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
In order to build openblocks on Windows, qscintilla will need to already be installed.
|
||||||
|
|
||||||
|
To do this, first download the source archive from [`https://www.riverbankcomputing.com/static/Downloads/QScintilla/2.14.1/QScintilla_src-2.14.1.tar.gz`](https://www.riverbankcomputing.com/static/Downloads/QScintilla/2.14.1/QScintilla_src-2.14.1.tar.gz)
|
||||||
|
|
||||||
|
Next, launch the *x64 Native Tools Command Prompt for VS 2022*, and cd into the directory that you extracted the archive to
|
||||||
|
|
||||||
|
Now, run `qmake` from your Qt's bin directory to configure it
|
||||||
|
|
||||||
|
Once that's done, build and install the project using `nmake install`
|
||||||
|
|
||||||
|
The library should now automatically be installed into your Qt installed directory
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
To uninstall the library, run `nmake uninstall`
|
|
@ -100,6 +100,13 @@ if (WIN32)
|
||||||
# No sense adding opengl-sw given that hardware acceleration is necessary, anyway
|
# No sense adding opengl-sw given that hardware acceleration is necessary, anyway
|
||||||
# Also don't want to clutter with plugins, add only needed ones
|
# Also don't want to clutter with plugins, add only needed ones
|
||||||
|
|
||||||
|
# Copy over QScintilla DLLs
|
||||||
|
# TODO: Use a better approach?
|
||||||
|
add_custom_command(
|
||||||
|
TARGET editor POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy ${QSCINTILLA_DLLS} $<TARGET_FILE_DIR:editor>
|
||||||
|
)
|
||||||
|
|
||||||
# Copy qt.conf to override default plugins location
|
# Copy qt.conf to override default plugins location
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET editor POST_BUILD
|
TARGET editor POST_BUILD
|
||||||
|
|
|
@ -73,7 +73,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||||
if (isDarkMode())
|
if (isDarkMode())
|
||||||
QIcon::setFallbackThemeName("editor-dark");
|
QIcon::setFallbackThemeName("editor-dark");
|
||||||
else
|
else
|
||||||
QIcon::setFallbackThemeName("editor");
|
QIcon::setThemeName("editor");
|
||||||
|
|
||||||
// qApp->setStyle(QStyleFactory::create("fusion"));
|
// qApp->setStyle(QStyleFactory::create("fusion"));
|
||||||
defaultMessageHandler = qInstallMessageHandler(logQtMessage);
|
defaultMessageHandler = qInstallMessageHandler(logQtMessage);
|
||||||
|
|
|
@ -6,7 +6,9 @@
|
||||||
{ "name": "pugixml", "version>=": "1.15" },
|
{ "name": "pugixml", "version>=": "1.15" },
|
||||||
"sdl2",
|
"sdl2",
|
||||||
"stb",
|
"stb",
|
||||||
"reactphysics3d"
|
"reactphysics3d",
|
||||||
|
"pkgconf",
|
||||||
|
"luajit"
|
||||||
],
|
],
|
||||||
"overrides": [
|
"overrides": [
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue