C ++的CMake(添加非内置的文件)(C++ CMake (add non-built file

2019-06-25 09:39发布

我使用cmake来配置我的项目。 我想象使用qtcreator其阅读的CMakeLists.txt项目的文件。 我有几个文本文件(非代码:配置文件,日志,..),我想将它们添加到我的cmake的项目,而不编译/链接它们(当然)。 可能吗 ? 其主要目标是在我的项目的树qtcreator自动打开并编辑...感谢您的帮助。

Answer 1:

你应该能够只是将它们添加到您的来源,无论列表add_executableadd_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)
标签: c++ cmake