Cmake 如何使用MinGW在Linux上交叉编译Chromium Embedded Framework(CEF)Windows应用程序
我正试图将中提供的cefclient和cefsimple应用程序从我的Linux机器编译成Windows可执行文件 我运行的是LinuxMint17(64位),我正试图从中编译Windows 32位版本的cefclient和cefsimple 我已经安装了cmake和MinGW交叉编译器,并分别进行了测试。它们都很好用。我还安装了build essential、libgtk2.0-dev和libgtkglext1-dev依赖项 当我尝试从新的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时,我得到
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添加交叉编译支持的建议: