我如何使用 CMake 从 qmake 建模 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 中,我必须通过 "File > Open" 而不是项目浏览器来访问它们。有解决方法吗?
您可以使用 a custom target 取决于给定的文件:
add_custom_target(project-related-files SOURCES ${OTHER_FILES})
由于缺少COMMAND
,将生成一个空目标,但它仍然依赖于SOURCES
。这也是将其他文件包含到 IDE:
中的官方方法
SOURCES
Specify additional source files to be included in the custom target. Specified source files will be added to IDE project files for convenience in editing even if they have no build rules.
将未编译的文件添加为 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
)
在基于 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 中,我必须通过 "File > Open" 而不是项目浏览器来访问它们。有解决方法吗?
您可以使用 a custom target 取决于给定的文件:
add_custom_target(project-related-files SOURCES ${OTHER_FILES})
由于缺少COMMAND
,将生成一个空目标,但它仍然依赖于SOURCES
。这也是将其他文件包含到 IDE:
SOURCES
Specify additional source files to be included in the custom target. Specified source files will be added to IDE project files for convenience in editing even if they have no build rules.
将未编译的文件添加为 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
)