(Как) принципиально отличается конфигурация cmake от файла проекта Visual-C ++? - PullRequest
2 голосов
/ 19 октября 2011

Чтобы перейти от исходного кода C ++ к двоичному модулю, процесс примерно такой:

set_of_source_files[a.cpp, b.cpp, ...] // conceptually, it doesn't matter where these are

          ||
          || Compiler  <- [compiler_settings]
          \/

set_of_object_files

          ||
          || Linker  <- [linker_settings]
          \/

binary module (dynamic library or executable)

Теперь Я знаю Проекты Visual Studio, они

  • Определить набор исходных файлов (структура и расположение каталогов в принципе не имеют значения / определены внутри файла проекта)
  • Определить параметры компилятора для всех (необязательно, каждого) исходных файлов
  • Определите настройки компоновщика
  • Определите, куда поместить сгенерированные выходные файлы

Я не знаю cmake , но, очевидно,(? ), информация, которую вы конфигурируете с помощью cmake, немного отличается от информации, которую вы кладете в vc[x]proj файлы.

Является ли "конфигурация cmake" просто другим форматированным "vcproj"file "или есть концептуальная разница? (За исключением очевидного (я предполагаю), что информация, которую я помещаю в конфигурацию cmake, не зависит от платформы.)

Альтернативным поворотом этого вопроса будетответить - в контекстеt выше - почему / если (?) можно переключиться на cmake, когда только компилируется для Windows с Visual-C ++.

1 Ответ

2 голосов
/ 19 октября 2011

Cmake - это кроссплатформенная программа - она ​​начинается с набора исходных файлов и относительно абстрактного набора инструкций о том, что с ними делать. Основываясь на них, он генерирует набор платформо-зависимых файлов. Если вы указали Windows / Visual Studio в качестве цели, она может / создаст файл vx [x] proj для использования.

Даже если вы используете только Visual C ++ в Windows, возможно вы можете воспользоваться cmake. Очевидная возможность состоит в том, что если вы хотите настроить таргетинг на несколько разных версий Visual Studio и иметь возможность напрямую генерировать правильные файлы для каждой из них, а не генерировать файлы для самой старой версии, которую вы хотите поддерживать, а затем зависеть от Visual Studio. функция обновления для преобразования их в целевую версию.

Основываясь на моем опыте с возможностями обновления VS (не особенно хорошо), я бы сказал, что это может быть / будет разумным и допустимым использованием.

...