0

次の構造を考慮してください。

dev_root/
  \__ common/
        \__ inc/
        \__ src/
        \__ CMakeLists.txt
  \__ project1/
        \__ inc/
        \__ src/
        \__ CMakeLists.txt
  \__ project2/
        \__ inc/
        \__ src/
        \__ CMakeLists.txt

Project1 と Project2 は別のプロジェクトです。どちらも共通のコードを使用します。IDE で編集できるように、いくつかの一般的なソース ファイルを各プロジェクトのビジュアル スタジオ プロジェクト ファイルに (選択的に) リストしたいと考えています。
共通コード用のスタンドアロン ライブラリは必要ありません。

ここでは、たとえば project1 の cmake ファイルで相対パスを使用します。

set(_hdr
    inc/proj1.h
    ../common/inc/common1.h
)
set(_src
    src/proj1.cxx
    ../common/src/common1a.cxx
    ../common/src/common1b.cxx
)
source_group("common\\inc" FILES 
              ../common/inc/common1.h 
)
source_group("common\\src" FILES 
              ../common/src/common1a.cxx 
              ../common/src/common1b.cxx
)
source_group("inc" FILES inc/proj1.h)
source_group("src" FILES src/proj1.cxx)

add_executable( project1 ${_src} ${_hdr} )

これは柔軟ではありません。フォルダーを移動したい場合は、すべての CMakeLists.txt を確認して変更する必要があります。依存関係を分離するためのより洗練された方法はありますか、または共通のソース ファイルを処理するより良い方法は何ですか?

どんな提案も歓迎します。どうもありがとう。

4

1 に答える 1

0

You may set variable to the path to 'common' folder, and use it for refer to files in it. So, whenever you need to move 'common' folder around, you need to edit only this variable.

CMakeLists.txt:

set(COMMON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/common)

project1/CMakeLists.txt:

set(_hdr
    inc/proj1.h
    ${COMMON_DIR}/inc/common1.h
)
set(_src
    src/proj1.cxx
    ${COMMON_DIR}/src/common1a.cxx
    ${COMMON_DIR}/src/common1b.cxx
)
...
于 2015-07-31T19:19:27.863 に答える