Adds qt installer

This commit is contained in:
Atul R 2020-02-22 18:42:39 +01:00
parent b6c60a4985
commit 68221becbc
4 changed files with 64 additions and 26 deletions

View File

@ -6,12 +6,11 @@ set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
macro(AddQtSupport addonName)
# execute_process(COMMAND node -p "require('@nodegui/qode').qtHome"
# WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
# OUTPUT_VARIABLE QT_HOME_DIR
# )
macro(AddQtSupport addonName)
execute_process(COMMAND node -p "require('./scripts/config.js').qtCmakeDir"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE QT_CMAKE_HOME_DIR
)
# if(DEFINED ENV{QT_INSTALL_DIR})
# # Allows to use custom Qt installation via QT_INSTALL_DIR env variable
@ -19,9 +18,12 @@ macro(AddQtSupport addonName)
# set(QT_HOME_DIR "$ENV{QT_INSTALL_DIR}")
# endif()
# string(REPLACE "\n" "" QT_HOME_DIR "${QT_HOME_DIR}")
# string(REPLACE "\"" "" QT_HOME_DIR "${QT_HOME_DIR}")
set(Qt5_DIR "/Users/atulr/Project/nodegui/nodegui/miniqt/5.15.0/clang_64/lib/cmake/Qt5")
string(REPLACE "\n" "" QT_CMAKE_HOME_DIR "${QT_CMAKE_HOME_DIR}")
string(REPLACE "\"" "" QT_CMAKE_HOME_DIR "${QT_CMAKE_HOME_DIR}")
message(STATUS "Using QT installation for ${addonName} QT_CMAKE_HOME_DIR:${QT_CMAKE_HOME_DIR}")
set(Qt5_DIR ${QT_CMAKE_HOME_DIR})
find_package(Qt5 COMPONENTS Widgets Gui Core REQUIRED)
endmacro(AddQtSupport addonName)

View File

@ -1,6 +1,6 @@
{
"name": "@nodegui/nodegui",
"version": "0.13.4",
"version": "0.14.0",
"description": "A cross platform library to build native desktop apps.",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
@ -8,19 +8,18 @@
"license": "MIT",
"private": false,
"scripts": {
"dev": "npm run build && qode dist/demo.js",
"build": "tsc && npm run build:addon",
"preinstall": "node ./scripts/preinstall.js",
"dev": "cross-env npm run build && qode dist/demo.js",
"build": "cross-env tsc && npm run build:addon",
"postinstall": "cross-env node ./scripts/skip.js || npm run prebuild:install || npm run build:addon",
"build:addon": "cross-env CMAKE_BUILD_PARALLEL_LEVEL=8 cmake-js compile",
"build:addon": "cross-env CMAKE_BUILD_PARALLEL_LEVEL=8 cmake-js build",
"prebuild:install": "prebuild-install --backend=cmake-js --runtime=napi --verbose",
"test": "qode ./node_modules/jest/bin/jest -i",
"lint:cpp": "clang-format -i --glob=src/cpp/**/*.[h,c]*",
"lint:ts": "tsc --noEmit && cross-env eslint './src/**/*.{ts,tsx,js,jsx}' --fix",
"docs": "typedoc && node ./website/docs/scripts/fixdocs.js"
"docs": "cross-env typedoc && node ./website/docs/scripts/fixdocs.js"
},
"dependencies": {
"@nodegui/qode": "^1.0.6",
"@nodegui/qode": "^2.0.0",
"cmake-js": "^6.0.0",
"cross-env": "^7.0.0",
"cuid": "^2.1.6",
@ -29,7 +28,6 @@
"prebuild-install": "^5.3.3"
},
"devDependencies": {
"@nodegui/qt-installer": "^1.0.0",
"@types/bindings": "^1.3.0",
"@types/jest": "^25.1.1",
"@types/node": "^13.1.2",

37
scripts/config.js Normal file
View File

@ -0,0 +1,37 @@
const os = require('os');
const path = require('path');
const setupDir = path.resolve(__dirname, '..', 'miniqt');
const miniQt = {
downloadLink: null,
qtHome: null,
version: '5.15.0',
setupDir,
};
switch (os.platform()) {
case 'darwin': {
miniQt.qtHome = path.resolve(setupDir, miniQt.version, 'clang_64');
miniQt.downloadLink = `https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/qt5_5150/qt.qt5.5150.clang_64/5.15.0-0-202002122005qtbase-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z`;
break;
}
case 'win32': {
miniQt.qtHome = path.resolve(setupDir, miniQt.version, 'msvc2017_64');
miniQt.downloadLink = `https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/qt5_5150/qt.qt5.5150.clang_64/5.15.0-0-202002122005qtbase-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z`;
break;
}
case 'linux': {
miniQt.qtHome = path.resolve(setupDir, miniQt.version, 'gcc_64');
miniQt.downloadLink = `https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/qt5_5150/qt.qt5.5150.clang_64/5.15.0-0-202002122005qtbase-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z`;
break;
}
}
const qtHome = process.env.CUSTOM_QT_DIR ? process.env.CUSTOM_QT_DIR : miniQt.qtHome;
module.exports = {
qtHome,
qtCmakeDir: path.resolve(qtHome, 'lib', 'cmake', 'Qt5'),
miniQt,
};

View File

@ -1,13 +1,14 @@
const { setupQt } = require('@nodegui/qt-installer');
const path = require('path');
#!/usr/bin/env node
const qtDir = path.resolve(__dirname, '..', 'miniqt');
const { setupArtifact } = require('@nodegui/artifact-installer');
const { miniQt } = require('./config');
setupQt({
qtDir,
downloadLink:
'https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/qt5_5150/qt.qt5.5150.clang_64/5.15.0-0-202002122005qtbase-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z',
osType: 'darwin',
setupArtifact({
outDir: miniQt.setupDir,
id: 'nodegui-mini-qt',
displayName: `Minimal Qt ${miniQt.version} installation`,
downloadLink: miniQt.downloadLink,
}).catch(err => {
throw err;
console.error(err);
process.exit(1);
});