首页 > 解决方案 > 如何使用 CMake 从 qmake 建模 OTHER_FILES?

问题描述

qmake基于项目的项目中,可以包含OTHER_FILES在 QtCreator 中使用它们,例如

QT += core gui widgets
TARGET = example-program
TEMPLATE = app

HEADERS = mainwindow.h
SOURCES = main.cpp mainwindow.cpp

OTHER_FILES = README.md LICENCE examples/network/server.c

这样就可以README.md轻松地在 QtCreator 中访问。具有相同目标的 CMake 文件看起来像

cmake_minimum_required(VERSION 3.5)
project(example CXX)

set(CMAKE_AUTOMOC ON)

find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)

set(HEADERS mainwindow.h)
set(SOURCES main.cpp mainwindow.cpp)
set(OTHER_FILES README.md LICENCE examples/network/server.c)

add_executable(example-program ${SOURCES} ${HEADERS})
target_link_libraries(example-program Qt5::Core Qt5::Gui Qt5::Widgets)

但是,OTHER_FILESQtCreator 中没有显示它们,我必须通过“文件 > 打开”而不是项目浏览器来访问它们。有解决方法吗?

标签: qtcmakeqt-creatorqmake

解决方案


添加非编译文件作为 CMake 目标的源没有问题;如果 CMake 无法识别它们的扩展名,它将简单地忽略它们。所以你可以很容易地做到这一点:

add_executable(example-program ${SOURCES} ${HEADERS} ${OTHER_FILES})

对于可能与实际源混淆的文件(基于它们的扩展名),总是可以选择将它们的HEADER_FILE_ONLY属性设置为 true:

set_source_files_properties(
  ${OTHER_FILES}
  PROPERTIES
  HEADER_FILE_ONLY TRUE
)

推荐阅读