36

プロジェクトの構成に cmake を使用しています。CMakeLists.txt を読み取る qtcreator を使用して、プロジェクトのファイルを視覚化します。いくつかのテキスト ファイル (非コード: 構成ファイル、ログなど) があり、それらを (もちろん) コンパイル/リンクせずに cmake プロジェクトに追加したいと考えています。出来ますか ?私のプロジェクトのツリーでqtcreatorを使用してそれらを自動的に開き、編集することが主な目標です...助けてくれてありがとう。

4

3 に答える 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 に答える