我使用cmake来配置我的项目。 我想象使用qtcreator其阅读的CMakeLists.txt项目的文件。 我有几个文本文件(非代码:配置文件,日志,..),我想将它们添加到我的cmake的项目,而不编译/链接它们(当然)。 可能吗 ? 其主要目标是在我的项目的树qtcreator自动打开并编辑...感谢您的帮助。
Answer 1:
你应该能够只是将它们添加到您的来源,无论列表add_executable
或add_library
电话是适当的,它们将出现在IDE中。
我相信CMake的使用文件的扩展名,以确定它们是否实际的源文件,所以如果你有类似的扩展名“.txt”或“.LOG”,他们将不会被编译。
Answer 2:
您好我已经创建了这样的功能:
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)
一方面,它工作,它是理想的, 在另一方面报道一定的误差 ,对如此仍在工作 。 ISSU变成是问题,我如何使用它也不怎么编写的功能。 现在,它完美的作品。
文章来源: C++ CMake (add non-built files)