首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MDd构建测试

用MDd构建测试
EN

Stack Overflow用户
提问于 2017-10-09 18:52:03
回答 1查看 837关注 0票数 2

我目前正在尝试实现一个基于(CEF)的软件。

我瞄准的平台是windows,我使用的是CEF自动构建的最新版本(截至本文发布日期)。

由于与其他项目的兼容性原因,我需要将运行时库分别指定为/MDd/MD for DebugRelease,并决定测试构建所提供的示例。我还使用了CEF指南中指出的make例程。

为此,我更改了文件cef_variables.cmake.特别是,我已经将CEF_COMPILER_FLAGS_DEBUGCEF_COMPILER_FLAGS_RELEASE更改为

代码语言:javascript
复制
list(APPEND CEF_COMPILER_FLAGS_DEBUG
     /MDd          # Multithreaded debug runtime
     /RTC1         # Disable optimizations
     /Od           # Enable basic run-time checks
)
list(APPEND CEF_COMPILER_FLAGS_RELEASE
     /MD           # Multithreaded release runtime
     /O2           # Optimize for maximum speed
     /Ob2          # Inline any suitable function
     /GF           # Enable string pooling
)

默认标志是/MTd/MT

当使用默认标志时,似乎没有问题,libcef_dll_wrappercefclient项目都编译得很好。

但是,当使用更改的标志时,我只能在构建libcef_dll_wrapper的同时构建cefclient引发以下链接器错误

代码语言:javascript
复制
Severity    Code    Description Project File    Line    Suppression State
Error   LNK2038 mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in binding_test.obj  cefclient   D:\Workspace\CEF\build\tests\cefclient\cef_sandbox.lib(at_exit.obj) 

cmake命令的输出是

代码语言:javascript
复制
-- The C compiler identification is MSVC 19.0.24215.1
-- The CXX compiler identification is MSVC 19.0.24215.1
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio                                                                                                                                                                                                14.0/VC/bin/cl.exe
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio                                                                                                                                                                                                14.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studi                                                                                                                                                                                               o 14.0/VC/bin/cl.exe
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studi                                                                                                                                                                                               o 14.0/VC/bin/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- *** CEF CONFIGURATION SETTINGS ***
-- Generator:                    Visual Studio 14 2015
-- Platform:                     Windows
-- Project architecture:         x86
-- Binary distribution root:     D:/Workspace/CEF
-- CEF Windows sandbox:          ON
-- Visual Studio ATL support:    ON
-- Standard libraries:           comctl32.lib;rpcrt4.lib;shlwapi.lib;ws2_32.lib;                                                                                                                                                                                               dbghelp.lib;psapi.lib;version.lib;winmm.lib
-- Compile defines:              __STDC_CONSTANT_MACROS;__STDC_FORMAT_MACROS;WIN                                                                                                                                                                                               32;_WIN32;_WINDOWS;UNICODE;_UNICODE;WINVER=0x0601;_WIN32_WINNT=0x601;NOMINMAX;WI                                                                                                                                                                                               N32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0;PSAPI_VERSION=1;CEF_USE_SANDBOX;CEF_USE_ATL
-- Compile defines (Debug):
-- Compile defines (Release):    NDEBUG;_NDEBUG
-- C compile flags:              /MP;/Gy;/GR-;/W4;/WX;/wd4100;/wd4127;/wd4244;/w                                                                                                                                                                                               d4481;/wd4512;/wd4701;/wd4702;/wd4996;/Zi
-- C compile flags (Debug):      /MDd;/RTC1;/Od
-- C compile flags (Release):    /MD;/O2;/Ob2;/GF
-- C++ compile flags:            /MP;/Gy;/GR-;/W4;/WX;/wd4100;/wd4127;/wd4244;/w                                                                                                                                                                                               d4481;/wd4512;/wd4701;/wd4702;/wd4996;/Zi
-- C++ compile flags (Debug):    /MDd;/RTC1;/Od
-- C++ compile flags (Release):  /MD;/O2;/Ob2;/GF
-- Exe link flags:                /MANIFEST:NO;/LARGEADDRESSAWARE
-- Exe link flags (Debug):       /DEBUG
-- Exe link flags (Release):
-- Shared link flags:
-- Shared link flags (Debug):    /DEBUG
-- Shared link flags (Release):
-- CEF Binary files:             chrome_elf.dll;d3dcompiler_43.dll;d3dcompiler_4                                                                                                                                                                                               7.dll;libcef.dll;libEGL.dll;libGLESv2.dll;natives_blob.bin;snapshot_blob.bin
-- CEF Resource files:           cef.pak;cef_100_percent.pak;cef_200_percent.pak                                                                                                                                                                                               ;cef_extensions.pak;devtools_resources.pak;icudtl.dat;locales
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Workspace/CEF/build

我在这里错过了什么?我认为如果我修改了宏变量,那么所有的项目都会使用相同的设置来构建,这样编译就不会出现错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-10 11:02:01

我继续研究,我发现在使用自动化构建时,它使用的是正式的cef_sandbox.lib,,它使用的是/MTd/MT运行时。

我的修正是更改macro_variables并将USE_SANDBOX设置为OFF。我仍然有一些错误,但现在cefclient编译正确

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46653165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档