首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于CMake Windows构建的Gitlab /CD变量

用于CMake Windows构建的Gitlab /CD变量
EN

Stack Overflow用户
提问于 2022-10-05 00:56:02
回答 1查看 179关注 0票数 1

我正在为安装在本地计算机上的Windows Gitlab运行程序编写CI/CD管道:

代码语言:javascript
复制
variables:
  RT_VERSION: "0.1"

build-win64:
  tags:
    - "win64"
  stage: build
  script:
    - echo $RT_VERSION
    - mkdir build 
    - cd build
    - cmake ../ -G "Visual Studio 16 2019" -DRELEASE_VERSION=$RT_VERSION -DCMAKE_BUILD_TYPE=Release
    - cmake --build . --config Release --target package
  artifacts:
    name: "raytracing-$RT_VERSION.zip"
    paths:
      - build/raytracing-$RT_VERSION-win64.7z
    expire_in: 24 hours

相应的cmake文件:

代码语言:javascript
复制
if(WIN32)
  set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} /Wall /WX /EHcs")
else()
  set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -Werror -Wextra")
  set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -Wall -std=c++1z -pedantic")
endif()

include_directories(. ../output)

add_executable(raytracing
  main.cpp
)

set(CPACK_SOURCE_GENERATOR "7Z")
set(CPACK_GENERATOR "7Z")

string(TIMESTAMP BUILD_VERSION "%Y.%m.%d.%H" UTC)
message(STATUS "DRAFT VERSION: " ${BUILD_VERSION})

set(RELEASE_VERSION "" CACHE STRING "program version")
if(NOT RELEASE_VERSION STREQUAL "")
  set(BUILD_VERSION ${RELEASE_VERSION})
  message(STATUS "RV: " ${RELEASE_VERSION})
endif()

message(STATUS "VERSION: ${BUILD_VERSION}")

set(CPACK_PACKAGE_VERSION ${BUILD_VERSION})
install (TARGETS raytracing RUNTIME DESTINATION bin)
include(CPack)

CI/CD作业分叉除生成版本外,其余均为罚款:

代码语言:javascript
复制
...
  Building Custom Rule D:/Programming/Gitlab/builds/Y3ZUwhN5/0/ktator/raytracing/CMakeLists.txt
  CPack: Create package using 7Z
  CPack: Install projects
  CPack: - Install project: raytracing [Release]
  CPack: Create package
  CPack: - package: D:/Programming/Gitlab/builds/Y3ZUwhN5/0/ktator/raytracing/build/raytracing-$RT_VERSION-win64.7z generated.
...
Uploading artifacts...
Runtime platform                                    arch=amd64 os=windows pid=11828 revision=bbcb5aba version=15.3.0
WARNING: build/raytracing-0.1-win64.7z: no matching files. Ensure that the artifact path is relative to the working directory 
ERROR: No files to upload     

变量在artifacts部分工作良好,而在script部分不工作。请帮我解决这个问题。

我还试着用百分比符号代替美元。这没什么用。

代码语言:javascript
复制
- cmake ../ -G "Visual Studio 16 2019" -DRELEASE_VERSION=%RT_VERSION% -DCMAKE_BUILD_TYPE=Release
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-10 19:21:47

找到了解决方案!$RT_VERSION应该用引号括起来。

有一个正确的gitlab.yml:

代码语言:javascript
复制
variables:
  RT_VERSION: "0.1"

build-win64:
  tags:
    - "win64"
  stage: build
  script:
    - echo $RT_VERSION
    - mkdir build 
    - cd build
    - cmake ../ -G "Visual Studio 16 2019" -DRELEASE_VERSION="$RT_VERSION" -DCMAKE_BUILD_TYPE=Release
    - cmake --build . --config Release --target package
  artifacts:
    name: "raytracing-$RT_VERSION.zip"
    paths:
      - build/raytracing-$RT_VERSION-win64.7z
    expire_in: 24 hours
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73954974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档