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
Cmake 如何使用MinGW在Linux上交叉编译Chromium Embedded Framework(CEF)Windows应用程序_Cmake_Cross Compiling_Chromium Embedded_Mingw W64 - Fatal编程技术网

Cmake 如何使用MinGW在Linux上交叉编译Chromium Embedded Framework(CEF)Windows应用程序

Cmake 如何使用MinGW在Linux上交叉编译Chromium Embedded Framework(CEF)Windows应用程序,cmake,cross-compiling,chromium-embedded,mingw-w64,Cmake,Cross Compiling,Chromium Embedded,Mingw W64,我正试图将中提供的cefclient和cefsimple应用程序从我的Linux机器编译成Windows可执行文件 我运行的是LinuxMint17(64位),我正试图从中编译Windows 32位版本的cefclient和cefsimple 我已经安装了cmake和MinGW交叉编译器,并分别进行了测试。它们都很好用。我还安装了build essential、libgtk2.0-dev和libgtkglext1-dev依赖项 当我尝试从新的CEF/build目录构建MakeFiles时,我得到

我正试图将中提供的cefclient和cefsimple应用程序从我的Linux机器编译成Windows可执行文件

我运行的是LinuxMint17(64位),我正试图从中编译Windows 32位版本的cefclient和cefsimple

我已经安装了cmake和MinGW交叉编译器,并分别进行了测试。它们都很好用。我还安装了build essential、libgtk2.0-dev和libgtkglext1-dev依赖项

当我尝试从新的
CEF/build
目录构建MakeFiles时,我得到一个错误:


命令:

>cmake-G“Unix生成文件”-D cmake_C_编译器=i686-w64-mingw32-gcc-D cmake_CXX_编译器=i686-w64-mingw32-G++..

CMakeError.log

Determining if the C compiler works failed with the following output:

Change Dir: /path/to/CEF/Source/build/CMakeFiles/CMakeTmp

Run Build Command:/usr/bin/make "cmTryCompileExec1497229498/fast"

/usr/bin/make -f CMakeFiles/cmTryCompileExec1497229498.dir/build.make CMakeFiles/cmTryCompileExec1497229498.dir/build

make[1]: Entering directory '/path/to/CEF/Source/build/CMakeFiles/CMakeTmp'

/usr/bin/cmake -E cmake_progress_report /path/to/CEF/Source/build/CMakeFiles/CMakeTmp/CMakeFiles 1

Building C object 

CMakeFiles/cmTryCompileExec1497229498.dir/testCCompiler.c.o

/usr/bin/i686-w64-mingw32-gcc    -o 
CMakeFiles/cmTryCompileExec1497229498.dir/testCCompiler.c.o   -c     /path/to/CEF/Source/build/CMakeFiles/CMakeTmp/testCCompiler.c

Linking C executable cmTryCompileExec1497229498

/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1497229498.dir/link.txt --verbose=1

/usr/bin/i686-w64-mingw32-gcc       CMakeFiles/cmTryCompileExec1497229498.dir/testCCompiler.c.o  -o cmTryCompileExec1497229498 -rdynamic

i686-w64-mingw32-gcc: error: unrecognized command line option '-rdynamic'

make[1]: *** [cmTryCompileExec1497229498] Error 1

make[1]: Leaving directory `/path/to/CEF/Source/build/CMakeFiles/CMakeTmp'

make: *** [cmTryCompileExec1497229498/fast] Error 2


这是我第一次尝试交叉编译从Linux到Windows的任何东西。我做错了吗?有什么我遗漏的吗?错误消息指示的是什么?

对于使用CMake进行交叉编译,除了编译器之外,它还定义了目标名称(CMake\u SYSTEM\u name)。感谢@Tsyvarev的提示!成功了。某种程度上。。。我创建了一个使第一个错误消失的。它创建并成功创建了makefile。但是,当在这些makefile上运行
make
时,我得到另一个错误:。我无法理解它的头绪…顶级
CMakeLists.txt
根据目标操作系统设置编译器标志(
CMAKE\u SYSTEM\u NAME
)。因此,它会看到“Windows”,并设置以
/
开头的标志。但交叉编译器是在Linux上运行的,所以它对选项(和不同的标志集)使用了
-
符号。可能,您无法交叉编译给定的项目。(要获得正确的交叉编译,项目应检查
CMAKE\u HOST\u SYSTEM\u NAME
,以获取编译器的设置标志)。@Tsyvarev。我想你是对的。我将在项目的Bitbucket页面上发布一个问题。我现在可能需要自己更新他们的CMakeLists.txt文件。向CEF添加交叉编译支持的建议: