Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 361новая вакансия за сутки·93 707вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 266
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 108
  • Облачные технологии14 073
  • QA вакансии3 460
  • Backend вакансии2 114
  • Инженер данных1 805
  • Продакт-менеджер1 266

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии986
  • AI вакансии955
  • Frontend вакансии745
  • Mobile вакансии44

По стеку

  • Go8 652
  • Java6 545
  • Node.js2 019
  • .NET1 721
  • Kotlin1 623
  • Rust1 453
  • C#710
  • PHP683
  • C++571

DevOps и инфраструктура

  • Kubernetes7 763
  • DevOps вакансии6 060
  • Linux-инфраструктура5 492
  • Terraform / IaC4 261
  • CI/CD3 241
  • Мониторинг и Observability1 783
  • SRE566
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 140
  • Бизнес-аналитик930
  • Аналитик данных853
  • Системный аналитик154

Другие направления

  • Проджект-менеджер615
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 321
  • Вакансии в Европе23 862
  • Вакансии в Канаде4 479
  • Работа в России3 913

По формату

  • Удалённые вакансии75 064
  • Релокация в США44 314
  • Гибридная работа12 393
  • Офисная работа7 089

По уровню

  • Senior вакансии42 691
  • Middle вакансии20 905
  • Junior вакансии6 727

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме CMakeВсе вопросы
CMakeSeniorОпыт

Как понять, что проблема связана именно с CMake, а не с приложением, окружением, сетью или зависимостями?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Изолируйте слой: откатите CMakeLists.txt через git bisect, включите --log-level=DEBUG и --verbose при сборке, проверьте compile_commands.json и ldd-вывод для runtime. Если проблема воспроизводится без CMake — виновато окружение или код.

Шаг 2: включите максимальный вывод CMake

cmake -S . -B build --log-level=DEBUG 2>&1 | tee cmake_debug.log
cmake --build build --verbose 2>&1 | tee build_verbose.log

Флаг --log-level=DEBUG покажет, какие пути разрешаются, какие переменные выставлены и какие файлы включаются. Флаг --verbose при сборке выведет точные команды компилятора и линковщика.

Диагностика: CMake или что-то другое?

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

Шаг 1: изолируйте слой

Задайте себе несколько уточняющих вопросов в строгом порядке:

  • Воспроизводится ли проблема на чистой машине / чистом Docker-образе? Если нет — дело в окружении, а не в CMake.
  • Воспроизводится ли проблема без последних изменений CMakeLists.txt? Откатитесь через git bisect до последнего рабочего коммита.
  • Воспроизводится ли при ручной линковке / компиляции без CMake? Если g++ main.cpp -lfoo -o app тоже падает — CMake ни при чём.
  • Меняется ли поведение при смене генератора? Пересоберите с -G Ninja вместо Makefiles: если поведение отличается, проблема в генераторе или race condition в параллельной сборке.

Шаг 3: проверьте сгенерированные артефакты

CMake генерирует Makefile / build.ninja / .sln. Откройте их и проверьте:

  • Правильные ли пути к заголовкам (-I)? Совпадают ли они с тем, что вы ожидаете от target_include_directories()?
  • Правильные ли флаги компилятора (-std=c++17, -O2)?
  • Правильные ли зависимости линковщика (-L, -l)?
# Просмотр compile_commands.json (если включён)
cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
cat build/compile_commands.json | python3 -m json.tool | grep "command" | head -20

Шаг 4: проверьте зависимости независимо

Если CMake находит библиотеку через find_package() или pkg_check_modules(), проверьте, что нашёл:

cmake -S . -B build -DCMAKE_FIND_DEBUG_MODE=ON 2>&1 | grep -i "found\|not found\|looking"

Если библиотека найдена некорректно (не та версия, не тот путь) — это проблема окружения или зависимостей, а не CMake-скриптов.

Шаг 5: изолируйте сетевые и runtime-проблемы

  • Runtime: используйте ldd ./app (Linux) или otool -L ./app (macOS) чтобы убедиться, что динамические библиотеки разрешаются корректно. Неправильный RPATH, заданный через CMAKE_INSTALL_RPATH, — типичная CMake-проблема.
  • Сеть: если падает загрузка зависимостей через FetchContent или ExternalProject — проблема сетевая, не CMake-логическая.
ldd build/myapp | grep "not found"

Подводные камни

  • Кешированный CMakeCache.txt: старые значения переменных остаются в кеше и перекрывают новые. Всегда удаляйте build/ при подозрении на такие проблемы.
  • Разные генераторы дают разный порядок флагов: поведение Ninja и Make может отличаться при параллельной сборке.
  • find_package() vs pkg-config: CMake может найти другую версию библиотеки, не ту, что видит pkg-config.
  • CMAKE_BUILD_TYPE по умолчанию пуст: без явного указания Release/Debug флаги оптимизации не применяются, поведение может отличаться от Production.
  • RPATH не включён при установке: make install может сломать запуск из-за отсутствия CMAKE_INSTALL_RPATH.
  • Политики CMake (cmake_policy): разные версии CMake интерпретируют одни и те же команды по-разному без явного cmake_minimum_required().
  • Переменные среды vs CMake-переменные: CC/CXX из окружения могут перекрывать CMAKE_C_COMPILER.
  • ExternalProject строит во время сборки, а не configure: ошибки в нём появляются позже, чем ожидается, что сбивает с толку.

Частые вопросы на собеседовании

  • В чём разница между target_include_directories() и include_directories()?
  • Каковы лучшие практики современного CMake (подход на основе таргетов)?
  • В чём разница между PRIVATE, PUBLIC и INTERFACE в свойствах таргетов CMake?
  • В каких проектах CMake оправдан, а где он становится источником лишней сложности?

Что портит ответ

  • Сразу обвинять CMake, не проверив соседние слои системы
  • Чинить симптом без минимального воспроизведения и evidence
  • Не учитывать версии, конфигурацию, окружение и recent changes

Что слушает интервьюер

  • Умеет локализовать проблему вокруг CMake
  • Двигается от симптома к гипотезам и проверкам
  • Отличает баг инструмента от ошибки использования или окружения

Как вы знаете этот вопрос?

Проверить себя по теме CMake →
←Предыдущий вопросКакие production или build/runtime-риски есть у CMake: воспроизводимость, совместимость, debugging, ресурсы или supply chain?Следующий вопрос→В чём разница между `target_link_libraries()` и линковкой через пути к библиотекам напрямую?

Связанные темы

CMakeDebuggingtechnical-communicationtechnology-selectiontrade-off-analysis