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
C++ 在wine中编译时进行CMake源文件名转换_C++_Cmake_Cross Compiling_Wine_Toolchain - Fatal编程技术网

C++ 在wine中编译时进行CMake源文件名转换

C++ 在wine中编译时进行CMake源文件名转换,c++,cmake,cross-compiling,wine,toolchain,C++,Cmake,Cross Compiling,Wine,Toolchain,我正在编写一个CMake工具链文件,用于在Linux上使用wine中的MSVC编译器进行编译: set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_C_COMPILER "cl") set(CMAKE_CXX_COMPILER "cl") ~/bin/cl文件: wine cmd /c Z:/home/velkan/bin/cl.bat "$@" call Z:\home\velkan\bin\vcvars32.bat cl %* @echo off Set

我正在编写一个CMake工具链文件,用于在Linux上使用wine中的MSVC编译器进行编译:

set(CMAKE_SYSTEM_NAME Windows)

set(CMAKE_C_COMPILER "cl")
set(CMAKE_CXX_COMPILER "cl")
~/bin/cl
文件:

wine cmd /c Z:/home/velkan/bin/cl.bat "$@"
call Z:\home\velkan\bin\vcvars32.bat
cl %*
@echo off
Set INCLUDE=C:\vc\include;C:\sdk\Include;C:\kits\10\Include\10.0.10586.0\ucrt;%INCLUDE%
Set LIB=C:\vc\lib;C:\sdk\Lib;C:\kits\10\Lib\10.0.10586.0\ucrt\x86;%LIB%
~/bin/cl.bat
文件:

wine cmd /c Z:/home/velkan/bin/cl.bat "$@"
call Z:\home\velkan\bin\vcvars32.bat
cl %*
@echo off
Set INCLUDE=C:\vc\include;C:\sdk\Include;C:\kits\10\Include\10.0.10586.0\ucrt;%INCLUDE%
Set LIB=C:\vc\lib;C:\sdk\Lib;C:\kits\10\Lib\10.0.10586.0\ucrt\x86;%LIB%
~/bin/vcvars32.bat
文件:

wine cmd /c Z:/home/velkan/bin/cl.bat "$@"
call Z:\home\velkan\bin\vcvars32.bat
cl %*
@echo off
Set INCLUDE=C:\vc\include;C:\sdk\Include;C:\kits\10\Include\10.0.10586.0\ucrt;%INCLUDE%
Set LIB=C:\vc\lib;C:\sdk\Lib;C:\kits\10\Lib\10.0.10586.0\ucrt\x86;%LIB%
将所有需要的内容复制到wine目录中,这样编译器就可以工作了


但当我运行cmake时,它会将Unix风格的路径(如
/home/velkan/build/CMakeFiles/cmakemp/testCCompiler.c
传递给编译器。对于工具链定义,是否有任何CMake变通方法可以无缝地将它们转换为类似
Z:/home/velkan/build/CMakeFiles/CMakeTmp/testCCompiler.c

CMake通过生成器确定路径分隔符的类型,工具链不会影响这些低级事物。您需要使用generator for Windows,如“NMake Makefiles”来使用Windows路径。或者,您的编译器脚本可以在使用这些路径之前转换它们。还有很多其他问题,所以我不确定最终的解决方案是什么。你也试过在wine下运行windows版本的cmake吗?@Joe,想要尽可能少的窗口。@Velkan当然,但它会在wine中看到windows样式的路径。cmake通过生成器确定路径分隔符的类型,工具链不会影响这些低级事物。您需要使用generator for Windows,如“NMake Makefiles”来使用Windows路径。或者,您的编译器脚本可以在使用这些路径之前转换它们。还有很多其他问题,所以我不确定最终的解决方案是什么。您是否也尝试过在wine下运行windows版本的cmake?@Joe,希望窗口尽可能小。@Velkan当然,但它会在wine中看到windows样式的路径。