diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..383fd96 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.20) + +project(CppQtTemplate LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +find_package(Qt6 REQUIRED COMPONENTS Widgets) + +add_executable(test_app main.cpp) + +target_link_libraries(test_app PRIVATE Qt6::Widgets) \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..4b950b0 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,59 @@ +pipeline { + agent none + + stages { + stage('Build Linux') { + agent { label 'linux' } + + steps { + cleanWs() + checkout scm + + sh ''' + cmake -S . -B build/linux -G Ninja \ + -DCMAKE_BUILD_TYPE=Release + + cmake --build build/linux + + mkdir -p dist/linux + cp build/linux/test_app dist/linux/test_app + ''' + + archiveArtifacts artifacts: 'dist/linux/**', fingerprint: true + } + } + + stage('Build Windows Qt') { + agent { label 'windows' } + + steps { + cleanWs() + checkout scm + + bat ''' + call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Auxiliary\\Build\\vcvars64.bat" + + cmake -S . -B build\\windows -G Ninja ^ + -DCMAKE_BUILD_TYPE=Release ^ + -DCMAKE_TOOLCHAIN_FILE=C:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake ^ + -DVCPKG_TARGET_TRIPLET=x64-windows + + cmake --build build\\windows + + if exist dist\\windows rmdir /s /q dist\\windows + mkdir dist\\windows + + copy build\\windows\\test_app.exe dist\\windows\\test_app.exe + + for /f "delims=" %%i in ('dir /b /s C:\\vcpkg\\installed\\x64-windows\\tools\\Qt6\\windeployqt.exe') do set WINDEPLOYQT=%%i + + "%WINDEPLOYQT%" --release --no-translations dist\\windows\\test_app.exe + + xcopy /Y /I C:\\vcpkg\\installed\\x64-windows\\bin\\*.dll dist\\windows\\ + ''' + + archiveArtifacts artifacts: 'dist/windows/**', fingerprint: true + } + } + } +} \ No newline at end of file diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..31fb408 --- /dev/null +++ b/main.cpp @@ -0,0 +1,15 @@ +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + QMessageBox::information( + nullptr, + "Qt Jenkins Test", + "Hello from Qt + Jenkins!" + ); + + return 0; +} \ No newline at end of file diff --git a/vcpkg.json b/vcpkg.json new file mode 100644 index 0000000..740d8b1 --- /dev/null +++ b/vcpkg.json @@ -0,0 +1,5 @@ +{ + "dependencies": [ + "qtbase" + ] +} \ No newline at end of file