Premake (lua) pch create /Yc Visual Studio

В предварительном сценарии lua для моего решения. Как настроить его для создания «/Yc» phc вместо использования «/Yu» при первой инициализации.

Я просмотрел онлайн-документацию и попробовал другие справочные сайты. Я не могу найти никакой помощи.

Я предполагаю, что это вариант сборки, но пробовал buildoptions { "/Yc" }

Некоторая помощь была бы очень востребована?

Привет! Вы нашли решение для этого? У меня такая же проблема с Premake5, когда он не может настроить файл pch.cpp для создания и вместо этого устанавливает его для использования. Это очень расстраивает.

Vignesh Gunasekaran 18.08.2019 07:06

Да, я отвечу на него ниже и отмечу как ответ

Alice Turner 18.08.2019 17:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
325
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

вам нужно указать

pchheader('StdAfx.h')

а также

pchsource('StdAfx.cpp') 

Спасибо за ответ. Я уже разместил эти ссылки на расположение файлов в своем коде, используя pchheader и «pchsource». Однако проблема заключается в том, что вместо того, чтобы установить для параметра «предварительно скомпилированный заголовок» значение «Создать (/Yc)», он устанавливает для него значение «Использовать (/Yu)». При первой настройке и сборке Premake должен установить для этого параметра значение «Создать (/Yc)», и после создания решения VS автоматически изменит его на «Использовать (/Yu)», но Premake изначально устанавливает этот параметр на «Использовать (/Yu)». )"

Alice Turner 06.07.2019 22:06

Я буду следить за этим @Mihai

Alice Turner 10.07.2019 02:36
Ответ принят как подходящий

Решение состояло в том, чтобы указать правильный путь к исходному файлу.

premake5.lua

pchheader "awepch.h"
pchsource "%{prj.name}/Src/awepch.cpp" // this is where the source file is located on disk

* Также обязательно, чтобы вы использовали правильный регистр для символов. Если вы используете «pch.h» для имени файла на диске, это должно быть имя файла в этом разделе вашего сценария «premake5.lua».

Извините, что так долго не могу ответить :)

Я тоже решил это. Но мое решение состояло в том, чтобы жестко закодировать имя проекта вместо использования %{prj.name} при указании pchsource. Странное поведение.

Vignesh Gunasekaran 18.08.2019 18:43

Рад, что вы решили это. По сравнению с C Make, Premake прост, чист и удобен, приятного кодирования :)

Alice Turner 18.08.2019 22:36

Для текущей версии premake v5. 0.0-бета1 необходимо сделать следующее, чтобы предварительно скомпилированный заголовок работал во всех IDE (особенно для Visual Studio):

  1. Поместите оба pch.h и pch.cpp в корневой каталог вашего проекта (не в решение/рабочее пространство).

  2. Установите точное имя (не путь) пч.ч на pchheader().

  3. Установите полный путь pch.cpp относительно скрипта premake5.lua в pchsource(). Это ВАЖНЫЙ. Я не знаю почему, но если вы не укажете полный относительный путь, то premake будет Используйте (/Ю) (использовать предварительно скомпилированный заголовок) к phc.cpp вместо Создать (/Yc) (создать предварительно скомпилированный заголовок), что приводит к тому, что предварительно скомпилированный заголовок не будет создан в Визуальная студия.

  4. Включите каталог, где pch.h и pch.cpp находятся в includedirs()

  5. #include "pch.h"В КАЖДОМ.cpp файла в вашем проекте, В ПЕРВОЙ ЛИНИИ каждого файла .cpp. Помните: #include "pch.h", "пч.ч" должен точно совпадать со строкой, которую вы установили в pchheader() в вашем скрипте premake5.lua.

  6. Если у вас есть файлы , вместо этого вы переименовываете их с ДОЛЖЕН в .cpp, иначе Visual Studio будет жаловаться на использование предварительно скомпилированного заголовка, который был скомпилирован с помощью компилятора C++.

Я знаю, что это слишком сложно, но это так.

Пример:

project "LearnGL"
    location "Projects/LearnGL/"
    kind "ConsoleApp"
    language "C++"
    targetdir "builds/"
    objdir "obj/%{prj.name}_%{cfg.shortname}"

    pchheader "pch.h" --Do not use paths here. Use directly the header file name
    pchsource "Projects/LearnGL/src/pch.cpp" --Full path MUST be specified relative to the premake5.lua (this) script.

    files {
        "Projects/LearnGL/src/**.h",
        "Projects/LearnGL/src/**.hpp",
        "Projects/LearnGL/src/**.cpp"
    }

    includedirs {
        "Projects/LearnGL/src/", --This is where pch.h and pch.cpp are located.
        "Projects/LearnGL/src/external/glad/include/",
        "Projects/LearnGL/src/external/stb_image/include/",
        "External/glfw/include/",
        "External/spdlog/include/"
    }

Другие вопросы по теме

Похожие вопросы

Мы инициализируем наш основной объект, и он создает новый объект в своем конструкторе. Когда мы уничтожаем основной объект, что происходит с его созданием?
Как динамически создать элемент на html-странице с помощью javascript?
Создайте новую слепую книгу Excel из одного листа в открытой книге
Почему я получаю сообщение об ошибке при попытке создать аудиторию?
Anylogic - Ошибка при создании модели: как определить?
Воспроизвести строку на основе значения столбца и заполнить эти новые строки другими значениями столбца в r
Создание репозитория Tortoise SVN: я получаю неправильную структуру папок по умолчанию
Должен ли я использовать дату и время или метку времени для дат создания и изменения?
Использование Python для создания пустых папок в каталогах пользователей
Скрипт создания изображения. Он создает правильное изображение на английском языке, но на арабском языке появляется проблема с кодированием