我正在使用 cmake 来配置我的项目。我使用读取 CMakeLists.txt 的 qtcreator 可视化项目文件。我有一些文本文件(非代码:配置文件、日志、..),我想将它们添加到我的 cmake 项目中,而不用(当然)编译/链接它们。是否可以 ?主要目标是使用 qtcreator 在我的项目树中自动打开它们并编辑它们......感谢您的帮助。
问问题
15448 次
3 回答
23
您应该能够将它们添加到您的源列表中,无论是适当的add_executable
还是add_library
调用,它们都会出现在 IDE 中。
我相信 CMake 使用文件的扩展名来确定它们是否是实际的源文件,所以如果你的文件有“.txt”或“.log”之类的扩展名,它们将不会被编译。
于 2012-06-10T23:47:45.167 回答
3
嗨,我创建了这种功能:
cmake_minimum_required(VERSION 3.5)
# cmake_parse_arguments needs cmake 3.5
##
# This function always adds sources to target, but when "WHEN" condition is not meet
# source is excluded from build process.
# This doesn't break build, but source is always visible for the project, what is
# very handy when working with muti-platform project with sources needed
# only for specific platform
#
# Usage:
# target_optional_sources(WHEN <condition>
# TARGET <target>
# <INTERFACE|PUBLIC|PRIVATE> [items2...]
# [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
##
function(target_optional_sources)
set(options OPTIONAL "")
set(oneValueArgs WHEN TARGET)
set(multiValueArgs PUBLIC PRIVATE INTERFACE)
cmake_parse_arguments(target_optional_sources
"${options}" "${oneValueArgs}" "${multiValueArgs}"
${ARGN})
target_sources(${target_optional_sources_TARGET}
PUBLIC ${target_optional_sources_PUBLIC}
PRIVATE ${target_optional_sources_PRIVATE}
INTERFACE ${target_optional_sources_INTERFACE})
if (NOT ${target_optional_sources_WHEN})
set_source_files_properties(${target_optional_sources_PUBLIC}
PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties(${target_optional_sources_PRIVATE}
PROPERTIES HEADER_FILE_ONLY TRUE)
set_source_files_properties(${target_optional_sources_INTERFACE}
PROPERTIES HEADER_FILE_ONLY TRUE)
endif(NOT ${target_optional_sources_WHEN})
endfunction(target_optional_sources)
一方面它可以按预期工作,另一方面,报告了一些错误,所以仍在努力. 问题是我如何使用该功能而不是如何编写它。现在它完美地工作了。
于 2018-10-01T10:37:13.297 回答
0
您可以创建自定义目标以使这些文件出现在您的 IDE 中,而不是添加构建库或可执行文件不需要的文件:
add_custom_target(myapp-doc
SOURCE readme.txt)
于 2021-03-05T09:45:21.690 回答