商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > CMake创建MFC桌面应用的实现

CMake创建MFC桌面应用的实现

  发布于2026-07-05 阅读(0)

扫一扫,手机访问

用 CMake 来构建 MFC 桌面应用,听起来可能有点绕,但其实环境配置和项目结构都不复杂。下面先把依赖装好,再给出完整的代码模板,照着走就能跑起来。

安装

  • (非必须)VC_redist.x86 和 VC_redist.x64 可以提前装好,下载地址在这里:

    CMake创建MFC桌面应用的实现

  • (必须)使用 Visual Studio 生成工具安装“C++ 桌面开发”工作负载(所有默认选项保留,不要取消勾选):下载页面

    • 如果选择安装 Visual Studio Community,同样勾选“C++ 桌面开发
    • 勾选后,记得在右侧的详细组件中把 MFC 也选上
  • (非必须)用 CLion 或其他编辑器开发的话,需要在 CMake 中手动指定生成器

    • 把默认的 ToolChain 配置为 Visual Studio,CLion 会自动识别已安装的 VS 版本

项目代码

核心是 CMakeLists.txt 文件,内容如下:

cmake_minimum_required(VERSION 3.0)
project(mfc_demo)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
# 1: static MFC library, 2: shared MFC library
set(CMAKE_MFC_FLAG 2)
#find_package(MFC)
#if(NOT MFC_FOUND)
#    message(FATAL_ERROR "MFC is not found, please check MFC installation")
#endif()
add_executable(mfc_demo mfc.cpp)
#target_sources(mfc_demo PRIVATE
#        mfc.cpp
#        )
#set_target_properties(mfc_demo PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
target_compile_definitions(mfc_demo PRIVATE
        -DWIN32
        -D_DEBUG
        -D_WINDOWS
        -D_UNICODE
        -DUNICODE
        -D_AFXDLL
        )
target_link_options(mfc_demo PRIVATE
        /ENTRY:wWinMainCRTStartup
        )

然后是头文件 mfc.h

#ifndef MFC_DEMO_MFC_H
#define MFC_DEMO_MFC_H

#include 

class MyApp:public CWinApp {
public:
    virtual BOOL InitInstance();
};

class MyFrame:public CFrameWnd
{
public:
    MyFrame();

};

#endif //MFC_DEMO_MFC_H

最后是实现文件 mfc.cpp

#include "mfc.h"

MyApp app;

BOOL MyApp::InitInstance()
{

    MyFrame* frame = new MyFrame;
    frame->ShowWindow(SW_SHOWNORMAL);
    frame->UpdateWindow();

    m_pMainWnd = frame;

    return TRUE;
}

MyFrame::MyFrame() {
    Create(NULL, TEXT("mfc"));
}

把这三个文件放在同一个目录下,用 CMake 配置并生成,就能得到一个最基础的 MFC 窗口应用。注意代码中的 CMAKE_MFC_FLAG 设为 2 表示使用共享 MFC 库,如果希望静态链接改成 1 即可。另外入口点 wWinMainCRTStartup 是 MFC 应用的标准启动方式,不要漏掉。

本文转载于:https://www.jb51.net/program/366550mie.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注