簡體   English   中英

如何使用 CMake 從 qmake 獲取 model OTHER_FILES?

[英]How can I model OTHER_FILES from qmake with CMake?

在基於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

這樣就可以輕松地在 QtCreator 中訪問README.md 具有相同目標的 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 中,我必須通過“文件 > 打開”而不是項目瀏覽器來訪問它們。 有解決方法嗎?

將未編譯的文件添加為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
)

您可以使用取決於給定文件的自定義目標

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

由於缺少COMMAND ,將生成一個空目標,但仍將取決於SOURCES 這也是將其他文件包含到IDE中的官方方法:

SOURCES
指定要包含在定制目標中的其他源文件。 即使沒有構建規則,指定的源文件也將添加到IDE項目文件中,以便於編輯。

我會評論說我認為這兩個答案都是正確的,使用哪個取決於項目的細節。

Angew 的回答將文件添加到項目中的單個項目中。

就我而言, Zeta 的回答效果更好,因為我在帶有子項目的項目的頂層有文件,並且在 QtCreator 中有一個新文件夾(我可以自定義的名稱)更適合我的需求。

添加一個額外的答案,因為我沒有看到提到的兩種方法之間的差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM