我很难在 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 中内置 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"
替换为您正在使用的任何版本。