Я исследую, насколько целесообразным было бы переключиться на код Visual Studio с более крупными и сложными проектами в C ++ с помощью cmake и столкнуться с проблемой переменных среды.
Некоторые проектыЯ имею дело со сложной структурой взаимосвязанных переменных среды, в настоящее время это решается в основном ручным построением в приглашении bash
$ source envSetupFile
$ mkdir build && cd build
$ cmake .. && make -j $(nproc)
, где envSetupFile
содержит множество различных переменных, большинство случаев связано снабор инструментов и некоторые конкретные настройки. Когда это просто простые строки, все работает нормально, однако есть много случаев, когда переменные зависят от другой, например, что-то вроде (в bash)
export PATH=/opt/custom/lib: $PATH
export ROOT=/some/path
export BIN=$ROOT/bin
export LIB=$ROOT/lib
что я сделал
Iустановил пакет расширения c / c ++ вместе с пакетами CMake и CMakeTools, а также EditorConfig для кода VS и добавил пользовательские строки в конфигурацию Visual Studio в рабочей области: /projectpath/.vscode/cmake-kits.json
где я устанавливаю переменные среды, но пока могу устанавливать (и проверять)Работа, определенная непосредственно, любая, которая требует значения другого, полностью проваливается.
пример:
"environmentVariables":{
"POTATO": "aaa",
"CARROT": "bbb",
"CABAGE": "${POTATO}/${CARROT}"
}
Я ожидаю, что впоследствии при запуске cmake, который ссылается на $ {CABAGE}, разрешит его как aaa/bbb
, но вместо этого он принимает их как строковые литералыи выдает ${POTATO}/${CARROT}
как ouptut
Должен признаться, я немного удивлен отсутствием следов такого варианта использования в документации или примерах, которые я видел до сих пор. Возможно, кто-то может протянуть руку? (Я использую версию кода VisualStudio: 1.36.1 в Ubuntu 16.04)