Как выполняются команды 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)

Что происходит, и / или как я могу выяснить, в какой среде / оболочке / во что бы ни выполнялись эти команды?

Ответы на вопрос(1)

Ваш ответ на вопрос