Аддаленая зборка C++ праз VPN: трымайце ланцужок інструментаў на хосце
Падключэнне агульнага каталога не тое ж, што зборка на аддаленай машыне. Праверце, які хост адказвае, які кампілятар запушчаны і дзе жывуць адладчык і сетка.
Агульны каталог падключаецца, рэдактар адкрывае файл, а зборка ўсё роўна ідзе на ноўтбуку. Памылак няма, і менавіта гэта блытае. Аддалены шлях — не аддалены ланцужок інструментаў, і рэдактар, які можа чытаць файл праз пункт мантавання, з задавальненнем выкліча лакальны кампілятар для яго. Рашэнне — перанесці працоўную прастору, а не толькі байты.
Смантаваны каталог — не працоўная прастора
Мантаванне праз SSH або SMB дае вам шлях. Ці прыходзяць кампілятар, сістэма зборкі і адладчык з аддаленага боку, залежыць ад таго, дзе рэдактар вырашыць іх запускаць. Шмат якія канфігурацыі чытаюць аддаленыя файлы і кампілююць іх лакальна, а потым зрываюцца на загалоўкавым файле, які існуе толькі на серверы.
Сімптом тонкі: зборка ўдаецца з частковымі вынікамі або ламаецца на шляху ўключэння, які ў рэдактары выглядае правільным.
Дакажыце, які хост адказвае
Падключыцеся сапраўднай аддаленай сесіяй, а не мантаваннем, затым выканайце тры каманды толькі для чытання ў тэрмінале, які дае гэтая сесія. Кіраўніцтва па SSH ад VS Code дакументуе, што тэрмінал у падключаным аддаленым акне працуе на аддаленым хосце, і тая ж сесія нясе адладку. Спачатку атрымайце адабрэнне на аддаленыя кампаненты, калі арганізацыя іх абмяжоўвае.
hostname паказвае машыну, на якой вы знаходзіцеся, pwd — дзе насамрэч жыве працоўная прастора, а command -v c++ выводзіць кампілятар, які запусціла б абалонка. Усе тры адказы павінны апісваць сервер, а не ноўтбук.
Яны не даказваюць, што версія або канфігурацыя зборкі правільныя. Параўнайце гэта з уласнымі інструкцыямі праекта як асобны крок.
Правядзіце адну праўку праз зборку і адладку
Зрабіце невялікую змену ў аддаленай працоўнай прасторы і захавайце яе там. Запусціце дакументаваную зборку з таго ж каталога і пераканайцеся, што вынік адлюстроўвае вашу праўку, а не старую копію дзесьці іншым. Затым запусціце адладчык праз тую ж аддаленую сесію, каб шлях да бінарніка і працоўны каталог паказвалі ў дрэва зборкі сервера. Супадзенне шляхоў да крыніц важнае, бо адладчык, які суадносіць вашу праўку з шляхам на ноўтбуку, адладжвае іншы файл.
Калі мэта адладкі паведамляе шляхі, што пачынаюцца з вашай лакальнай хатняй дырэкторыі, канфігурацыя запуску ўсё яшчэ думае лакальна.
Сеткавыя залежнасці застаюцца на хосце
Атрыманне пакета, аперацыя git або запуск тэстаў на хосце зборкі выкарыстоўваюць сетку і ўліковыя даныя гэтага хоста, а не VPN-сесію вашага ноўтбука. Тое, што ноўтбук дасягае прыватнага люстэрка пакетаў, нічога не кажа пра тое, ці можа гэта сервер. Калі зборцы патрэбны рэестр, серверу патрэбны маршрут да яго, і гэта размова пра файрвол, а не налада рэдактара.
Тое ж дзейнічае ў адваротным кірунку для тэставых праграм. Доступ да сэрвісу на серверы з браўзера — асобнае злучэнне, якое патрабуе адабранага прыватнага шляху або абмежаванай пераадрасацыі, а не адкрытага слухача.
Адключыцеся, не страціўшы працу
Захавайце і зафіксуйце змены, або хаця б занатаваўшы працоўнае дрэва, перш чым злучэнне абарвецца. Аддаленая сесія рэдагавання не абяцае, што зборка, якая ідзе, або незахаваны буфер перажывуць перапынак сеткі. Для ўсяго, што мусіць перажыць вашу сесію, выкарыстоўвайце падтрыманы праектам працэс заданняў або сесій.
Падзел працы тады відавочны: ноўтбук — інтэрфейс, сервер валодае працоўнай прасторай і ланцужком інструментаў, а VPN забяспечвае маршрут. Пераносіць файлы і пераносіць зборку — два асобныя рашэнні.