экспат — это зависимость моего проекта. Я хотел бы создать свой проект на github windows-2019 runner. Я получил ошибку Could NOT find EXPAT (missing: EXPAT_LIBRARY EXPAT_INCLUDE_DIR)
(см. строку 26 в разделе «Настройка CMake » ). Ниже приведен мини-пример для воспроизведения ошибки.
main.cpp
#include <iostream>
int main() {
std::cout << "hello\n";
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.25)
project(hello VERSION 1.0.0 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
find_package(EXPAT MODULE REQUIRED)
set(Required_Libraries ${Required_Libraries} EXPAT::EXPAT)
add_executable(hello main.cpp)
build_windows.yml
name: Build Windows
on:
workflow_dispatch:
jobs:
build:
name: Build Windows
runs-on: windows-2019
steps:
- uses: actions/checkout@v3
- name: "Install required packages"
run: |
vcpkg install expat
vcpkg integrate install
- name: Configure CMake
run: |
mkdir build
cd build
cmake ..
- name: Build
run: |
cd build
cmake --build . --config Release
Вы забыли активировать vcpkg при настройке проекта. Это можно понять из вашего журнала: он вообще не замечает vcpkg.
Добавить в CMakeLists.txt
# Set the path to your vcpkg installation
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake")
set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${CMAKE_SOURCE_DIR}/vcpkg/installed/x64-windows")
Я сомневаюсь, что установка vcpkg вручную что-либо изменит, vcpkg, очевидно, уже установлен, иначе команды vcpkg не будут работать.
Имеет смысл. Добавлен необходимый конфиг в CMakeLists.txt.
@DeltaGeorge Это работает после того, как я добавляю первую строку в ваше решение. Мне нужно изменить ${CMAKE_SOURCE_DIR}
на C:
См. vcpkg в проектах CMake.