tgoop.com/cpplastic/307
Create:
Last Update:
Last Update:
Добре, попередній допис я ще вчора написав. Але вдень у мене відпустка, тож пофіксив я все вночі
Проблема №1: ручний запуск #Conan відрізнявся від запуску зсередини #Qbs. Для останнього є приблизно такий код:
const p = new Process()
p.start(executable, args)
Тут
args — це список рядків. І у мене там були рядки виду '-s:a compiler=msvc', '-s:a compiler.cppstd=20' тощо. Прикол у тому, що, схоже, Qbs їх додатково бере у лапки, і це неправильно парситься саме на деяких компах з віндою ['-s:a', 'compiler=msvc'], а потім зробивши .flat(). Важко сказати, як я до цього прийшов — чисто чуйка.Проблема №2: ручний запуск
qbs build з тими самими параметрами, що на CI, видавав інший результат. Виявилося, що… x64_86 — легко! Хочете x86_65 — будь ласка! Яке ж дно 🤦🏻♂️ Але принаймні на тому самому компі зібралося успішно.Проблема №3: білд на CI все одно не працював. Тут було вкрай важко збагнути, що не так. Допомогла тільки тулза PsExec від SysInternals, бо на вінді немає простого вбудованого способу запустити щось від імені іншого користувача. Коли вже отримав термінал під
NETWORK SERVICES, то виявилося, що… conan.exe просто відсутній Як так трапилося? Раніше у мене стояв Conan 1.x, який я встановив через Chocolatey. Ну й, власне, він бінарь кудись до себе кидав у
C:\ProgramData\chocolatey\bin\, який є у Path. Але я зробив апгрейд до Conan 2.x (власне, у цьому й полягала задача). І виявляється, що для другої версії Chocolatey просто качає інстолер, котрий раніше не існував, і запускає його. А останній ставиться у C:\Program Files\Conan\conan\ та додає цей шлях в Path тільки для поточного користувача 🤦🏻♂️ Короч, додав у системний — і все полетіло. І шо я думаю… Збирання C++ — це, звісно, доволі важка задача, бо є купа нюансів, є легасі рішення тощо. Але це все не виправдовує погані #тулзи. Чи можна на C++ писати хороший тулінг? Та звісно! Але таке враження, що більшість плюсистів просто не знає, що це таке, бо не має досвіду з іншими адекватнішими мовами з нормальною інфраструктурою. Тобто звикли постійно страждати, і вже важко цього позбутися, чи шо? Нє, ну серйозно…

