Как выполняются команды CMake execute_process?
У меня есть следующие строки в моем файле CMakeLists.txt. Я использую CMake 3.5.2 в Windows 7 и использую Visual Studio 12 2013 в качестве генератора с проверкой «Использовать встроенные компиляторы по умолчанию» в графическом интерфейсе.
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 знает, как это сделать?
Документация говорит:
«CMake выполняет дочерний процесс, используя API-интерфейсы операционной системы напрямую. Все аргументы передаются VERBATIM дочернему процессу. Промежуточная оболочка не используется, поэтому операторы оболочки, такие как>, рассматриваются как обычные аргументы».
Но я не понимаю, что это значит, особенно учитывая, что если я использую следующую строку, я получаю/usr/bin/make
в качестве вывода:
execute_process(COMMAND which make)
Что происходит, и / или как я могу выяснить, в какой среде / оболочке / во что бы ни выполнялись эти команды?