项目

一般

简介

行为

错误 #449

打开

cmake MFC

李立奎3 个月 之前添加. 更新于 3 个月 之前.

状态:
新建
优先级:
普通
指派给:
-
开始日期:
2025-10-12
计划完成日期:
% 完成:

0%

预期时间:
#2:

描述

在 CMake 中配置 MFC(Microsoft Foundation Classes)项目,只需在 CMakeLists.txt 中设置 CMAKE_MFC_FLAG 变量即可控制链接方式:

  • 设置为 1 → 静态链接 MFC(生成的 exe 体积大,但无额外 DLL 依赖)
  • 设置为 2 → 动态链接 MFC(exe 体积小,目标机器需带 MFC 运行库)

最小可运行示例(动态链接):

cmake_minimum_required(VERSION 3.10)
project(mfc_demo)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_MFC_FLAG 2)          # 2=共享DLL,1=静态库
add_executable(mfc_demo WIN32  # WIN32 表示 GUI 子系统
    mfc_demo.cpp
)
# 必要的宏
target_compile_definitions(mfc_demo PRIVATE
    _WINDOWS _UNICODE UNICODE _AFXDLL)
# 入口点
target_link_options(mfc_demo PRIVATE /ENTRY:wWinMainCRTStartup)

源码 mfc_demo.cpp 示例:

#include <afxwin.h>            // MFC 核心头
class CMyApp : public CWinApp {
    BOOL InitInstance() override {
        CFrameWnd* p = new CFrameWnd;
        p->Create(nullptr, _T("CMake+MFC"));
        m_pMainWnd = p;
        p->ShowWindow(SW_SHOW);
        return TRUE;
    }
} theApp;

生成 & 编译(需安装 VS 且勾选“C++ 桌面开发 + MFC”):

cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

运行 build\Release\mfc_demo.exe 即可看到空白 MFC 窗口。

如需静态链接,只需把 CMAKE_MFC_FLAG 改为 1,并将运行时库同步为 /MT(d)(CMake 默认会根据标志自动处理,也可手动 target_compile_options 指定 /MT)。

行为

导出 Atom PDF