В проекте C ++, который использует VCPKG и CMAKE, где должен быть размещен файл зависимостей?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 В проекте C ++, который использует VCPKG и CMAKE, где должен быть размещен файл зависимостей?

Сообщение Anonymous »

Мне удалось создать минимальный рабочий пример проекта C ++, который использует Vcpkg диспетчер пакетов с Cmake .
В этом проекте я имею единую зависимость от Protobuf. Это не масштабируемые решения. (Или, по крайней мере, группа связанных концепций.)
Эмулировать это, я переместил файлы исходного кода в каталог, называемый примером-обязательным .
Однако я не знаю, где vcpkg.json Файл зависимости не должен быть. vcpkg.json расположен в корневом каталоге.
он строится, когда этот файл перемещается в пример-подлежащий каталогу . Похоже, это говорит о том, что правило состоит в том, что файл зависимостей должен быть расположен в том же каталоге, что и root cmakelists.txt .

Однако это может быть неправильным правилом. Это может быть
, например, что -то другое, возможно, файл зависимости vcpkg.json должен быть помещен в один и тот же каталог, что и файл cmakelists.txt , если это Cmakelists.txt File определяет зависимость через Find_package . Onlighten?example-executable/
CMakeLists.txt
main.cpp
message.proto
vcpkg.json # ok here !
cmake-build.sh
< /code>
cmake-build.sh содержит команды, выполняемые для создания проекта:
#!/bin/bash

cmake -B build -S example-executable -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build
< /code>
The other files:
CMakeLists.txt
cmake_minimum_required(VERSION 3.5)

project(vcpkg-project-test CXX)

find_package(Protobuf REQUIRED)

set(CMAKE_CXX_STANDARD 23)

set(PROTO_FILES message.proto)
set(PROTO_GENERATE_DIR ${CMAKE_BINARY_DIR}/generated)
file(MAKE_DIRECTORY ${PROTO_GENERATE_DIR})

protobuf_generate_cpp(
PROTO_SRCS PROTO_HDRS ${PROTO_FILES}
)

add_library(
lib_proto
STATIC
${PROTO_SRCS}
)

target_include_directories(
lib_proto
PUBLIC
${Protobuf_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}
)

target_link_libraries(
lib_proto
PUBLIC
${Protobuf_LIBRARIES}
)

add_executable(
a.out
main.cpp
)

target_link_libraries(
a.out
PRIVATE
lib_proto
protobuf::libprotoc protobuf::libprotobuf protobuf::libprotobuf-lite
)
< /code>
main.cpp
#include "message.pb.h"

int main() {

std::cout

Подробнее здесь: https://stackoverflow.com/questions/795 ... ncies-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»