У меня есть следующие строки в моем файле CMakeLists.txt. Я запускаю CMake 3.5.2 в Windows 7 и использую Visual Studio 12 2013, когда генератор с «Использовать стандартные компиляторы по умолчанию» проверен в gui.Как выполняются команды CMake execute_process?
find_path(FORTRAN_DIR NAMES cdll.cpp fdll.f90 Makefile PATHS ../source)
execute_process(COMMAND make
WORKING_DIRECTORY ${FORTRAN_DIR})
Это нормально.
Но как это работает? Это в Windows!
Я уже скомпилировал Makefile через MSYS2 (MinGW) в Windows, но если это то, что использует CMake, то я не уверен, как он это знает.
Редактировать: Я положил execute_process(COMMAND uname -a)
в файл CMakeLists.txt и получил MSYS_NT-6.1 MYCOMPUTERNAMEHERE 2.5.2(0.297/5/3) 2016-07-15 08:31 x86_64 Msys
. Поэтому я предполагаю, что ответы на них передаются через MSYS ... но как CMake знает, как это сделать?
The documentation говорит:
«CMake выполняет дочерний процесс с использованием операционной системы API, непосредственно Все аргументы передаются VERBATIM в дочернем процессе не используется промежуточная оболочка, поэтому оболочки операторы, такие как> рассматриваются как нормальные.. аргументы «.
Но я не понимаю, что это значит, особенно с учетом того, что, если я использую следующую строку, я получаю /usr/bin/make
как выход:
execute_process(COMMAND which make)
Что происходит, и/или, как я могу понять, какая среда/оболочка/все эти команды запущены?
Похоже, вы запускаете CMake под MinGW или аналогичный. – Tsyvarev
Это имело бы смысл, так как я получил часть этого, чтобы скомпилировать ранее (с MSYS2, на самом деле), но как CMake знает, чтобы использовать его? –
Возможно, вы запускаете cmake под MSYS2 или устанавливаете его в этой среде. – Tsyvarev