CMake разбить PATH
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 28.12.25 20:19
Оценка:
Здравствуйте!

Хочу разделить содержимое системной переменной PATH на отдельные пути

    if (CMAKE_HOST_WIN32)
        set(UMBA_PATH_STRING "$ENV{PATH}")
        # file(TO_CMAKE_PATH "$ENV{PATH}" CMAKE_PATH_STRING)
        # execute_process(
        #     COMMAND cmd /c "echo %PATH%"
        #     OUTPUT_VARIABLE UMBA_PATH_STRING
        #     OUTPUT_STRIP_TRAILING_WHITESPACE
        # )
        message(STATUS "${UMBA_PATH_STRING}")
        # string(REPLACE ";" ";" UMBA_CMAKE_VERBOSE_PATH_LIST ${UMBA_PATH_STRING})
        string(REPLACE ";" ";" UMBA_CMAKE_VERBOSE_PATH_LIST "${UMBA_PATH_STRING}")
    else()
        set(UMBA_PATH_STRING "$ENV{PATH}")
        string(REPLACE ":" ";" UMBA_CMAKE_VERBOSE_PATH_LIST "${UMBA_PATH_STRING}")
    endif()

    message(STATUS "===== CMake PATH =====")
    # message(STATUS "\n  ${UMBA_CMAKE_VERBOSE_PATH_FORMATTED}")
    foreach(UMBA_CMAKE_VERBOSE_PATH_ITEM ${UMBA_CMAKE_VERBOSE_PATH_LIST})
    # foreach(UMBA_CMAKE_VERBOSE_PATH_ITEM IN LISTS ${UMBA_CMAKE_VERBOSE_PATH_LIST})
        message(STATUS "    ${UMBA_CMAKE_VERBOSE_PATH_ITEM}")
    endforeach()



Пробовал по разному, или плохо, или совсем бред. Дипсик постоянно путается в показаниях, он уже задолбал

По большей части разбивает на отдельные строки по ';', но не всегда.

[cmake] --     f:\umba-tools\bin
[cmake] --     C:\WINDOWS\system32
[cmake] --     C:\WINDOWS
[cmake] --     C:\WINDOWS\System32\Wbem
[cmake] --     C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn;C:\Program Files (x86)\Microsoft Visual Studio 8\Team Tools\Performance Tools
[cmake] --     C:\Program Files (x86)\Java\jre7\bin
[cmake] --     C:\Program Files (x86)\Java\jre7\bin\client
[cmake] --     C:\Program Files (x86)\Subversion\bin
[cmake] --     C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static
[cmake] --     C:\WINDOWS\System32\OpenSSH;C:\Program Files (x86)\IncrediBuild
[cmake] --     C:\Program Files (x86)\Graphviz2.38\bin
[cmake] --     C:\Python39\Scripts;C:\Python39;C:\Program Files\Eclipse Foundation\jdk-8.0.302.8-hotspot\bin


Чо за хрень?
Маньяк Робокряк колесит по городу
Re: CMake разбить PATH
От: Великий Мессия google
Дата: 28.12.25 20:23
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте!


M>Хочу разделить содержимое системной переменной PATH на отдельные пути


"$ENV{PATH}"


не надо брать в кавычки
Re[2]: CMake разбить PATH
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 28.12.25 20:38
Оценка: +1
Здравствуйте, Великий Мессия, Вы писали:

M>>Хочу разделить содержимое системной переменной PATH на отдельные пути


ВМ>

ВМ>"$ENV{PATH}"


ВМ>не надо брать в кавычки


Спасибо. Попробовал
set(UMBA_PATH_STRING $ENV{PATH})

вместо
set(UMBA_PATH_STRING "$ENV{PATH}")


Работает.

Вообще, без кавычек пробовал, но какие-то другие варианты, там какая-то ипанина вообще выходила

Велик и могуч язык CMake'а, чтобы ему пусто было
Маньяк Робокряк колесит по городу
Re[3]: CMake разбить PATH
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.12.25 19:41
Оценка:
Здравствуйте, Marty, Вы писали:

M>Велик и могуч язык CMake'а, чтобы ему пусто было


Заметь, расширение .txt вполне характерно для текстов, написанных на великих и могучих языках
Re[3]: CMake разбить PATH
От: LuciferSaratov Россия  
Дата: 29.12.25 19:43
Оценка:
Здравствуйте, Marty, Вы писали:

M>Велик и могуч язык CMake'а, чтобы ему пусто было


Если рассудок и жизнь дороги вам, держитесь подальше от этой пародии на систему сборки.
Cmake невероятно плох, и если уж так хочется заниматься ещё и программированием скриптов сборки (что само по себе весьма сомнительная идея, ящетаю, но речь не об этом), то есть огромное количество альтернатив, каждая из которых лучше симейка. Ну premake хотя бы.
Единственная уважительная причина с ним связываться это если начальство или заказчик принуждают.
Re[4]: CMake разбить PATH
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 29.12.25 21:58
Оценка: +1
Здравствуйте, LuciferSaratov, Вы писали:

M>>Велик и могуч язык CMake'а, чтобы ему пусто было


LS>Если рассудок и жизнь дороги вам, держитесь подальше от этой пародии на систему сборки.

LS>Cmake невероятно плох, и если уж так хочется заниматься ещё и программированием скриптов сборки (что само по себе весьма сомнительная идея, ящетаю, но речь не об этом), то есть огромное количество альтернатив, каждая из которых лучше симейка. Ну premake хотя бы.
LS>Единственная уважительная причина с ним связываться это если начальство или заказчик принуждают.

CMake — говно, но уже почти стандарт, увы
Маньяк Робокряк колесит по городу
Re[4]: CMake разбить PATH
От: SaZ  
Дата: 30.12.25 13:25
Оценка:
Здравствуйте, LuciferSaratov, Вы писали:

LS>... Ну premake хотя бы.


Ой, пробовали его в продакшене. То ещё говно непредсказуемое.
Re[4]: CMake разбить PATH
От: _NN_  
Дата: 28.02.26 22:24
Оценка:
Здравствуйте, LuciferSaratov, Вы писали:

LS>Здравствуйте, Marty, Вы писали:


M>>Велик и могуч язык CMake'а, чтобы ему пусто было


LS>Если рассудок и жизнь дороги вам, держитесь подальше от этой пародии на систему сборки.

LS>Cmake невероятно плох, и если уж так хочется заниматься ещё и программированием скриптов сборки (что само по себе весьма сомнительная идея, ящетаю, но речь не об этом), то есть огромное количество альтернатив, каждая из которых лучше симейка. Ну premake хотя бы.
LS>Единственная уважительная причина с ним связываться это если начальство или заказчик принуждают.

На наше счастье мы получили генеративные модели, которые прекрасно справляются со сложными CMake файлами.
Тут просто надо следить что нам подкалывают разработчики время от времени.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: CMake разбить PATH
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.03.26 10:22
Оценка: +1
Здравствуйте, LuciferSaratov, Вы писали:

LS>Если рассудок и жизнь дороги вам, держитесь подальше от этой пародии на систему сборки.


Они, к сожалению, все говны.

И все решают не ту задачу, которую стоило бы решать.

Они все пытаются собрать проект, выяснив методом изучения системы, что на ней установлено, и проявляя невероятную гибкость, пытаясь установленным обойтись.

Это было уместно в те стародавние времена, когда какой-нибудь условный emacs умел собираться на любом UNIX (по крайней мере, старался), пытаясь зацепиться хоть за что-то.

Сейчас же разумнее и правильнее, когда проект выдвигает твёрдые требования, что ему надо для сборки. А задача сборочной системы — убедиться, что все сборочные зависимости удовлетворены, и дать внятную диагностику, если это не так.

В идеале, мы хотим иметь воспроизводимые сборки в воспроизводимом окружении, а не сборки "как получится" в том окружении, которое попалось под руку.
Re[4]: CMake разбить PATH
От: Dair Россия  
Дата: 01.03.26 10:46
Оценка:
Здравствуйте, LuciferSaratov, Вы писали:

LS>Единственная уважительная причина с ним связываться это если начальство или заказчик принуждают.


А если платформа? Вот в Android NDK cmake официальная система сборки. Можно, конечно, прикручивать другие, но...

про premake не слышал, а чем он сильно лучше?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.