TGViewer
Сіпласпластик Сіпласпластик @cpplastic · 739 subscribers
Post #307 352
Добре, попередній допис я ще вчора написав. Але вдень у мене відпустка, тож пофіксив я все вночі 😅

Проблема №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, видавав інший результат. Виявилося, що… 🥁 параметри були не тими самими. Я помилився в одному символі, коли вказував архітектуру 🤡, а Qbs нічого проти не має. Хочете x64_86 — легко! Хочете x86_65 — будь ласка! Яке ж дно 🤦🏻‍♂️ Але принаймні на тому самому компі зібралося успішно.

Проблема №3: білд на CI все одно не працював. Тут було вкрай важко збагнути, що не так. Допомогла тільки тулза PsExec від SysInternals, бо на вінді немає простого вбудованого способу запустити щось від імені іншого користувача. Коли вже отримав термінал під NETWORK SERVICES, то виявилося, що… conan.exe просто відсутній 😂 І Qbs на це навіть ексепшн не кинув. Типу: «немає бінаря, що я маю запускати? та й хуй з ним, поїхали далі!»

Як так трапилося? Раніше у мене стояв Conan 1.x, який я встановив через Chocolatey. Ну й, власне, він бінарь кудись до себе кидав у C:\ProgramData\chocolatey\bin\, який є у Path. Але я зробив апгрейд до Conan 2.x (власне, у цьому й полягала задача). І виявляється, що для другої версії Chocolatey просто качає інстолер, котрий раніше не існував, і запускає його. А останній ставиться у C:\Program Files\Conan\conan\ та додає цей шлях в Path тільки для поточного користувача 🤦🏻‍♂️ Короч, додав у системний — і все полетіло.

І шо я думаю… Збирання C++ — це, звісно, доволі важка задача, бо є купа нюансів, є легасі рішення тощо. Але це все не виправдовує погані #тулзи. Чи можна на C++ писати хороший тулінг? Та звісно! Але таке враження, що більшість плюсистів просто не знає, що це таке, бо не має досвіду з іншими адекватнішими мовами з нормальною інфраструктурою. Тобто звикли постійно страждати, і вже важко цього позбутися, чи шо? Нє, ну серйозно…
Docs PsExec - Sysinternals Execute processes on remote systems.
  • 👍 5
  • 😱 1
More from @cpplastic
  1. Oct 7, 2026Post #543
  2. Oct 2, 2026Щось не злетіло з self-driving cars у автовиробників, еге ж? А стільки галасу було. Ну зат…
  3. Sep 24, 2026Ух, яку ж класну доповідь подивився: «Scott Jenson: Are we really going to use the same De…
  4. Sep 23, 2026Post #540
  5. Sep 21, 2026«Порекламую» вам український сайт, який мені дуже подобається. Взяв слово в лапки, бо як і…
  6. Sep 18, 2026Ви ж знаєте, що я полюбляю Tailscale 💠 попри те, що недоліків у них теж вистачає? Але сам…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →