Как настроить CMakeLists для использования компилятора командной строки Windows вместо Visual Studio - PullRequest
1 голос
/ 06 апреля 2020

Я хотел бы преобразовать свой проект из решения Visual Studio для сборки с CMake и скомпилировать его с Makefiles.

Это вопрос из двух частей.

  1. Прямо сейчас CMakeLists.txt:

    cmake_minimum_required(VERSION 3.13.0)
    
    project(Project2015 CXX)
    
    add_executable(Project Source/main.cpp)
    

Когда я запускаю cmake .. из каталога сборки, он генерирует файлы * .vcxproj и * .sln, но есть нет Makefile. Как я могу изменить файл CMakeLists для генерации Makefile?

Что такое компилятор, эквивалентный командной строке gcc для windows? И как мне установить этот компилятор в качестве цели для CMake и сгенерированного Makefile? Читая об инструментах сборки https://docs.microsoft.com/en-us/cpp/build/walkthrough-compile-a-c-program-on-the-command-line?view=vs-2019 Нужно ли указывать на компилятор cl.exe? Будет ли это работать с CMake и Makefiles? Я читаю в Интернете, что эти флаги командной строки будут устанавливать компилятор, как я могу добавить их в CMakeLists.txt для автоматического использования?

DCMAKE_C_COMPILER=cl 
DCMAKE_C_COMPILER_FORCED=ON 
DCMAKE_CXX_COMPILER=cl 
DCMAKE_CXX_COMPILER_FORCED=ON 
DCMAKE_BUILD_TYPE=Debug 
DCMAKE_INSTALL_PREFIX=%CFITSIO_DIR% 
G"NMake Makefiles"

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Вы должны использовать режим инструмента сборки CMake для сборок из командной строки.

После настройки вашего проекта для 64-битной сборки с использованием Visual Studio 2019, например, с

cmake -S <sourcedir> -B <builddir> -G "Visual Studio 16 2019" -A x64 

, вы могли бы run

cmake --build <builddir> --target ALL_BUILD --config Release

Дополнительные параметры см. здесь , почти тихая сборка из командной строки, см. здесь .

0 голосов
/ 06 апреля 2020

Как подсказывает @vre, вы можете запускать все из командной строки, все еще используя генератор Visual Studio. Просто используйте инструменты сборки командной строки CMake:

cmake ..
cmake --build . --config Release

Таким образом, вам вообще не нужно открывать Visual Studio для сборки ваших библиотек / исполняемых файлов.

Другой вариант - использовать Microsoft nmake утилита, которая будет генерировать NMake Makefiles. Вы можете указать CMake использовать этот генератор вместо этого:

cmake -G"NMake Makefiles" ..

Полный список генераторов CMake, которые вы можете выбрать, приведен в списке здесь .

Если вы не хотите вручную устанавливать генератор CMake в командной строке, вы можете установить его в верхней части файла CMakeLists.txt:

set (CMAKE_GENERATOR "NMake Makefiles" CACHE INTERNAL "" FORCE)

Он будет использоваться в конфигурации second CMake в этом случае при первом запуске будет использоваться генератор системы по умолчанию. Если вы хотите, чтобы CMake использовал его в конфигурации first , вы можете использовать процедуру Preload.cmake, описанную в этом answer .

...