簡體   English   中英

如何根據 GitLab CI 構建腳本中的設置更改代碼中的某些內容

[英]How to change something in the code according to settings in the GitLab CI build script

我的代碼是用 C++ 編寫的
GitLab CI 編譯器:MSVC2017_x64

我的項目正在 Windows 服務器上使用 GitLab 管道編譯。 我希望能夠兩次編譯該項目的一部分,並在編譯之前以某種方式更改代碼中的某些內容,以便我將擁有相同應用程序的兩個版本,但具有不同的預定義設置。
像編譯器在 header 或 cpp 文件中設置#define這樣簡單的東西會很棒。
使用相同的技術,我還想將內部版本號(管道 ID)硬連接到應用程序中。

我已經嘗試過/D-D參數,但它沒有設置#define

無論用戶的設置如何,該解決方案都需要工作,因此環境變量之類的東西將不起作用。

這是我的.gitlab-ci.yml文件(應用程序最終是使用qmakenmake調用構建的):

stages:
  - build
  - test
variables:
  GIT_SUBMODULE_STRATEGY: recursive
build:
  stage: build
  only:
    - master
  tags:
    - windows
    - qt
  script:
    - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
    - call "C:\Qt\5.9.1\msvc2017_64\bin\qtenv2.bat"
    - set CL=/MP16
    - set PATH="C:\Program Files (x86)\Inno Setup 5";%PATH%
    - cd %CI_PROJECT_DIR%\(...)\Application
    - qmake CONFIG+=release
    - nmake
    - cd %CI_PROJECT_DIR%\(...)\3rdParty\Windows
    - copy (...)\Application.exe .
    - copy (...)\Application.ico .
    - windeployqt .
    - iscc InnoScript.iss

  artifacts:
    name: "%CI_COMMIT_REF_NAME%"
    expire_in: 1 month
    paths:
    - (...)\3rdParty\Windows\Application.exe

這就是我想要的樣子(使用-D mode=xy的):

stages:
  - build
  - test
variables:
  GIT_SUBMODULE_STRATEGY: recursive
build:
  stage: build
  only:
    - master
  tags:
    - windows
    - qt
  script:
    - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
    - call "C:\Qt\5.9.1\msvc2017_64\bin\qtenv2.bat"
    - set CL=/MP16
    - set PATH="C:\Program Files (x86)\Inno Setup 5";%PATH%
    - cd %CI_PROJECT_DIR%\(...)\Application
    - qmake CONFIG+=release
    - nmake -D mode=prod
    - qmake CONFIG+=release
    - nmake -D mode=stage
    - cd %CI_PROJECT_DIR%\(...)\3rdParty\Windows
    - copy (...)\Application.exe .
    - copy (...)\Application.ico .
    - windeployqt .
    - iscc InnoScript.iss

  artifacts:
    name: "%CI_COMMIT_REF_NAME%"
    expire_in: 1 month
    paths:
    - (...)\3rdParty\Windows\Application.exe

如何僅使用 GitLab CI 修改我的代碼,還是有其他更好的方法?

我剛剛發現如何做到這一點。

之前,我試圖將-D參數添加到nmake調用,而我需要將DEFINES+=MY_VAR='foo bar'添加到qmake調用。
執行此操作並刪除build-文件夾以擺脫過時的Makefile.DebugMakefile.Release文件后,我讓它正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM