Как я могу моделировать OTHER_FILES из qmake с CMake? - PullRequest
0 голосов
/ 02 мая 2018

В 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_FILES не отображаются в QtCreator, и я должен получить к ним доступ через "Файл> Открыть" вместо браузера проекта. Есть ли обходной путь?

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Нет проблем с добавлением не скомпилированных файлов в качестве источников цели 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
)
0 голосов
/ 02 мая 2018

Вы можете использовать пользовательскую цель , которая зависит от заданных файлов:

add_custom_target(project-related-files SOURCES ${OTHER_FILES})

Поскольку COMMAND отсутствует, будет сгенерирована пустая цель, но она все равно будет зависеть от SOURCES. Это также официальный способ включения других файлов в IDE:

SOURCES
Укажите дополнительные исходные файлы, которые будут включены в пользовательскую цель. Указанные исходные файлы будут добавлены в файлы проекта IDE для удобства редактирования, даже если у них нет правил сборки.

...