make install
クロスコンパイルする必要があるので、CMakeのグーグルモックとグーグルテストフレームワークにインストールディレクティブを追加したい(つまり、正しいことをしたい)。
これは外部ライブラリであるため、変更を非間接的に保持したいと思います。CMake File Globbingを使用せずにサブディレクトリをglobするように動作させる可能性はありGLOB_RECURSE
ますか?
gtestで発生する問題は、再帰的にglobを実行すると、include / gtest/interalが定義した関数によってフラット化されることです。したがって、ディレクトリ内のファイルには、代わりにinclude / gtest/internalがインストールされ${prefix}/include/gtest
ます${prefix}/include/gtest/internal
可能であればCMakeLists.txt
、インクルードディレクトリにファイルを追加したくありません。
function(install_header dest_dir)
foreach(header ${ARGN})
install(FILES include/${header}
DESTINATION include/google/${dest_dir}
)
endforeach()
endfunction()
# doesn't work with GLOB
# but works with GLOB_RECURSE -- however copies more than intended
file(GLOB headers RELATIVE ${gtest_SOURCE_DIR}/include/ *.h.pump *.h )
file(GLOB internalheaders RELATIVE ${gtest_SOURCE_DIR}/include/gtest/internal/ *.h.pump *.h )
if(NOT headers)
message(FATAL_ERROR "headers not found")
endif()
if(NOT internalheaders)
message(FATAL_ERROR "headers not found")
endif()
install_header(gtest ${headers})
install_header(gtest/internal ${internalheaders})