some_magic_function
ソースのリストを渡すにPARENT_SCOPE
は、サブディレクトリの CMakeList のスコープでは使用できないため、最初にそれらを設定しないようにする必要があります。
${CMAKE_CURRENT_SOURCE_DIR}
関数自体が定義されている場所に関係なく、関数内で使用できるため、関数に渡す必要もありません。
したがって、次のようなことができます。
SET( SUBDIR_SOURCES a.cpp b.cpp c.cpp )
some_magic_function( SUBDIR_SOURCES )
SET( SUBDIR_SOURCES ${SUBDIR_SOURCES} PARENT_SCOPE )
関数は次のようになります。
FUNCTION( some_magic_function SOURCE_FILES )
FOREACH( SOURCE_FILE ${${SOURCE_FILES}} )
SET( MODIFIED ${MODIFIED} ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE} )
ENDFOREACH()
SET( ${SOURCE_FILES} ${MODIFIED} PARENT_SCOPE )
ENDFUNCTION()
関数内で${SOURCE_FILES}
は isであるため、実際のファイル リストを取得するにはSUBDIR_SOURCES
を使用する必要があります。${${SOURCE_FILES}}
関数には独自のスコープがあるためSUBDIR_SOURCES
、関数の外側のスコープでの値を置き換えたいので、PARENT_SCOPE
呼び出すときに使用する必要がありますSET( ${SOURCE_FILES}...
これらのコマンドの詳細については、次を実行してください。
cmake --help-command set
cmake --help-command function