Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/crystal-reports/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Configuration 如何在cmake&x27之前执行检查;是否执行了服务器的配置脚本?_Configuration_Cmake_Environment Variables - Fatal编程技术网

Configuration 如何在cmake&x27之前执行检查;是否执行了服务器的配置脚本?

Configuration 如何在cmake&x27之前执行检查;是否执行了服务器的配置脚本?,configuration,cmake,environment-variables,Configuration,Cmake,Environment Variables,我现在被一些关于cmake的问题绊住了。由于这已经是一个已知问题(请参阅),如果%PATH%环境中存在sh.exe,则调用MinGW Makefile生成器将失败。如果人们有一个并行的cygwin或msys安装,这种情况经常发生。但是,我想创建一个变通方法,在%PATH%中搜索名为sh.exe的可执行文件,如果存在这样的路径,则应将其从环境变量中删除。当然,我可以用一个预编译的c程序和一个批处理脚本(当前解决方案)来实现这一点,但这需要用户在调用cmake之前执行脚本,这有点不方便。 我希望在根

我现在被一些关于cmake的问题绊住了。由于这已经是一个已知问题(请参阅),如果%PATH%环境中存在sh.exe,则调用MinGW Makefile生成器将失败。如果人们有一个并行的cygwin或msys安装,这种情况经常发生。但是,我想创建一个变通方法,在%PATH%中搜索名为sh.exe的可执行文件,如果存在这样的路径,则应将其从环境变量中删除。当然,我可以用一个预编译的c程序和一个批处理脚本(当前解决方案)来实现这一点,但这需要用户在调用cmake之前执行脚本,这有点不方便。 我希望在根CMakeLists.txt中执行类似的操作

if (MINGW)
    "scan for sh.exe and remove eventually"
endif (MINGW)
但cmake在进行预构建配置后首先读取CMakeLists.txt,在本例中,预构建配置将失败,因为path环境尚未修改以允许安装MinGW。在执行cmake配置之前,是否有任何方法执行此类检查并更改%PATH%

是的,我还可以编写另一个批处理脚本来改变环境,然后调用CGOST,但这将是我为我的目的考虑的最终选择:


提前感谢。

是的,您可以使用CMake工具链文件(通常用于交叉编译)。工具链文件在编译器测试之前执行

请阅读更多有关该网站的信息。该文件本身是一个普通的CMake文件,因此问题中的伪代码应该可以正常工作

cmake -DCMAKE_TOOLCHAIN_FILE=fixmingw.cmake

当然,明显的缺点是您仍然需要用户运行与“普通”CMake命令不同的命令,我认为没有办法解决这个问题。

是的,您可以使用CMake工具链文件(通常用于交叉编译)。工具链文件在编译器测试之前执行

请阅读更多有关该网站的信息。该文件本身是一个普通的CMake文件,因此问题中的伪代码应该可以正常工作

cmake -DCMAKE_TOOLCHAIN_FILE=fixmingw.cmake
当然,明显的缺点是您仍然需要用户运行与“普通”CMake命令不同的命令,我认为没有办法解决这个问题