shell – 如何运行CMake execute_process命令?
我的CMakeLists.txt文件中有以下几行.我在Windows 7上运行CMake 3.5.2,并使用Visual Studio 12 2013作为生成器,在gui中选中“使用默认本机编译器”.
find_path(FORTRAN_DIR NAMES cdll.cpp fdll.f90 Makefile PATHS ../source) execute_process(COMMAND make WORKING_DIRECTORY ${FORTRAN_DIR}) 这运行得很好. 但它到底是怎么运行的?它在Windows上! 我之前在Windows上通过MSYS2(MinGW)编译了Makefile,但如果这是CMake正在使用的,那么我不知道它是如何做到的. 编辑:我把execute_process(uname -a命令)到的CMakeLists.txt文件,并得到了MSYS_NT-6.1 MYCOMPUTERNAMEHERE 2.5.2(0.297 / 5/3)2016年7月15日08:31 x86_64的MSYS.所以我猜这是通过MSYS运行的答案……但CMake如何知道这样做? The documentation说: “CMake直接使用操作系统API执行子进程.所有参数都通过VERBATIM传递给子进程.没有使用中间shell,所以shell操作符如>被视为普通参数.” 但我不明白这意味着什么,特别是考虑到如果我使用以下行,我将/usr/bin/make作为输出: execute_process(COMMAND which make) 发生了什么,和/或我怎样才能弄清楚这些命令运行的环境/ shell /是什么?
CMake附带了Kitware的OS抽象/检测库kwsys:
execute_process()魔法在 所以 – 正如@Tsyvarev所评论的那样 – 您的行为可能是在PATH环境中使用MinGW / MSYS的Win32 / 64版本的CMake(查找给定的Unix特定命令)或从MSYS运行的MinakeWW32 / 64版本的CMake. 您也可以考虑使用像 参考 > CMake does not find custom command “ls” (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |