Установить переменную среды отладки / запуска в проекте Visual Studio 2017 C ++? - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь настроить автоматический запуск / отладку переменных окружения для моего проекта в Visual Studio.Я имею в виду, есть ли какая-нибудь строка кода CMake или C ++, чтобы сделать это без необходимости делать это вручную?

Здесь - инструкции, как сделать это вручную (чего я хочу избежать).

Здесь до сих пор остается нерешенным вопрос о том, как это сделать с помощью Cmake (кажется невозможным).

Я также пытался с setenv() и putenv() по-разному, но это не сработало, потому что основная функция даже не запускается до этой строки кода, пока не появится сообщение об ошибке: «Some.dll не найден» и программа остановится.

Ответы [ 2 ]

0 голосов
/ 14 июля 2019

Решение, которое я нашел, основано на этом ответе .

Шаги для решения:

  1. Создайте файл UserTemplate.vcxproj.user рядом с файлом CMakeLists.txt со следующим содержимым:
<?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
        <LocalDebuggerEnvironment>PATH=..\Your\Path\to\Binaries;%PATH%".</LocalDebuggerEnvironment>
        <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
      </PropertyGroup>
    </Project>

Где ..\Your\Path\to\Binaries - относительный путь к вашему бинарному файлу. файлы (две точки в начале .. необязательны, если вы хотите перейти в относительный путь каталога, вы можете использовать их).

  1. Добавьте следующие строки кода в файл CMakeLists.txt.
    # Configure the template file
    SET(USER_FILE main.vcxproj.user)
    SET(OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/${USER_FILE})
    CONFIGURE_FILE(UserTemplate.vcxproj.user ${USER_FILE} @ONLY)

Где ProjectName - это имя проекта VS, в котором вы хотите определить переменную PATH.

0 голосов
/ 19 июня 2019

Если ваш dll - тот, который вы намереваетесь использовать, этот ответ подробно описывает, как быстро убедиться, что он найден во время выполнения (поместив DLL вместе с исполняемым файлом)

Если в коде вы имеете в виду «автоматический», вы можете установить переменные среды в коде, используя _putenv, как описано в этот ответ аналогично тому, что вы, похоже, описываете.

ostringstream classSize;
classSize << "classSize=" << howManyInClass;
_putenv(classSize.str().c_str());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...