Visual Studio 中的 CMake MFC 项目缺少资源编辑器

问题描述 投票:0回答:1

我很难在 MFC CMake 项目中打开交互式资源编辑器,否则该项目可以正常编译和运行。

项目文件布局如下:

.
├── CMakeLists.txt
├── inc
│   ├── <...>
│   ├── resource.h
├── res
│   ├── MyApp.ico
│   ├── MyApp.rc
│   └── MyApp.rc2
└── src
    ├── CMakeLists.txt
    └── <...>

顶级 CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)
project(MyProject)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 14)
if (MSVC)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /we4715") # makes missing return as error
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")     # parallel build
endif()
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/output)

# MFC
add_definitions(-D_AFXDLL)
set(CMAKE_MFC_FLAG 1)

add_subdirectory(src)

src CMakeLists.txt:

include_directories(${CMAKE_SOURCE_DIR}/inc)
include_directories(${CMAKE_SOURCE_DIR}/res)
include_directories(${CMAKE_SOURCE_DIR})

set(SOURCES
        <...>
        )

set(HEADERS
        <...>
        )

add_executable(
    ${PROJECT_NAME}
    WIN32 
    ${SOURCES}
    ${HEADERS}
    ${CMAKE_SOURCE_DIR}/res/MyApp.rc
    ${CMAKE_SOURCE_DIR}/res/MyApp.rc2
    )

install(TARGETS MyApp
        RUNTIME DESTINATION .)

在 Visual Studio (Pro) 中,项目加载得很好,并针对我需要的每个配置进行编译,但如果我尝试打开 .rc 文件,则会收到 MFC 和 ATL 缺少标头的错误(

afxres.h
winres.h
dde.rh
,...)。资源文件不会像在 VS 解决方案上那样在资源编辑器中打开。

双击 MyApp.rc 时会发生消息,我得到

致命错误 RC1015:无法打开包含文件“afxres.h”。

我使用今天可用的最新 VS 版本,即 15.8.5,在 Visual Studio 中打开 CMake 项目时会发生这种情况。

我已经在 Visual Studio 安装中安装了 ATL/MFC 组件。就像我说的,它编译得很好,所以依赖关系得到正确解决。

我错过了什么吗?这可能吗?

visual-studio visual-c++ cmake mfc
1个回答
0
投票

我也有同样的问题。这似乎是 Visual Studio 中内置 CMake 支持的已知限制:https://developercommunity.visualstudio.com/t/cmake-project-cant-open-rc-file/172331

解决方法是从命令行使用 CMake 生成 Visual Studio 解决方案,然后打开它:

cmake -G "Visual Studio 16" -B build
start build/*.sln

"Visual Studio 16"
替换为您正在使用的任何版本。

© www.soinside.com 2019 - 2024. All rights reserved.