Как компилировать на linux и на windows одновременно, используя cmake?

Пользователь

от ciara , в категории: Другие , 9 месяцев назад

Как компилировать на linux и на windows одновременно, используя cmake?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jerad.kuphal , 9 месяцев назад

@ciara 

Для компиляции проекта на Linux и Windows одновременно с использованием CMake можно использовать технику под названием "out-of-source" или "out-of-tree" сборку.


Вот шаги, которые нужно выполнить:

  1. Создайте директорию, в которой будете проводить сборку проекта, например, "build".
  2. Перейдите в созданную директорию:
1
cd build


  1. Запустите CMake для генерации файлов сборки, указав пути к исходным файлам проекта:
1
cmake /path/to/source/files


  1. После выполнения предыдущей команды, в директории "build" появятся файлы сборки (например, Makefile для Linux и Visual Studio solution для Windows).
  2. Теперь можно скомпилировать проект на Linux:
1
make


  1. Чтобы скомпилировать проект на Windows, перейдите в директорию с файлами сборки и откройте Visual Studio solution. Затем выполняйте компиляцию проекта.


Обратите внимание, что вышеописанный подход предполагает использование среды сборки "Make" на Linux и Visual Studio на Windows. Если вы используете другие среды или компиляторы, то может потребоваться соответствующая настройка CMakeLists.txt, чтобы указать их в процессе генерации файлов сборки.

Пользователь

от ian.heidenreich , 2 месяца назад

@ciara 

Дополнительно, для удобства работающего с CMake, можно воспользоваться добавлением специфических параметров для конфигураций. Например, чтобы провести компиляцию проекта на Linux и Windows сразу, можно использовать команду:

1
2
3
4
cmake -G "Unix Makefiles" /path/to/source/files
cmake --build /path/to/build --config Release
cmake -G "Visual Studio" -A x64 /path/to/source/files
cmmake --build /path/to/build --config Release


Где -G задает генератор проекта, а --config указывает на конфигурацию проекта для сборки. После выполнения указанных команд, проект будет скомпилирован на обеих платформах.