Cmake ExternalProject_Addコマンドで依存関係プロジェクトを構築しています:
include(ExternalProject)
...
set(COMMON_BASE_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../CommonBase)
ExternalProject_Add(CommonBaseProject
SOURCE_DIR ${COMMON_BASE_PROJECT_DIR}
BINARY_DIR ${COMMON_BASE_PROJECT_DIR}/build
INSTALL_COMMMAND ""
)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${COMMON_BASE_PROJECT_DIR}/include)
add_library(
${LIBRARY_NAME}
SHARED
${SRC_FILES}
${INCLUDE_FILES}
)
target_link_libraries (Bios ${COMMON_BASE_PROJECT_DIR}/build/libCommonBase.dll)
add_dependencies(Bios CommonBaseProject)
しかし、エラーが発生します:
[100%] Linking CXX shared library libCommonBase.dll
[100%] Built target CommonBase
[ 50%] Performing install step for 'CommonBaseProject'
make[3]: *** No rule to make target 'install'. Stop.
インストール手順を行う必要がないので、私の質問は、それを無効にする方法ですか?
STEP_TARGETS build
を使用してビルドステップのターゲットを生成し、この特定のターゲットに依存関係を追加できます。ステップターゲットの名前は<external-project-name>-<step-name>
であるため、この場合、ビルドステップを表すターゲットの名前はCommonBaseProject-build
になります。
また、CommonBaseProjectをEXCLUDE_FROM_ALL TRUE
を使用して「すべて」のターゲットから除外することもできます。
ExternalProject_Add(CommonBaseProject
SOURCE_DIR ${COMMON_BASE_PROJECT_DIR}
BINARY_DIR ${COMMON_BASE_PROJECT_DIR}/build
STEP_TARGETS build
EXCLUDE_FROM_ALL TRUE
)
add_dependencies(Bios CommonBaseProject-build)
あなたはそれをほとんど持っていました:INSTALL_COMMAND ""
の代わりに
INSTALL_COMMAND cmake -E echo "Skipping install step."
すでに回答されているあなたの質問には関係ありませんが、私の場合は次のようになりましたExternalProject_Add
ディレクティブ:
ExternalProject_Add(external_project
# [...]
# Override build/install command
BUILD_COMMAND ""
INSTALL_COMMAND
"${CMAKE_COMMAND}"
--build .
--target INSTALL # Wrong casing for "install" target
--config ${CMAKE_BUILD_TYPE}
)
この場合、cmakeは非常によく似たエラー(*** No rule to make target 'INSTALL'
)ですが、この場合、不適切な大文字のINSTALL
ターゲットを探しているのは外部プロジェクトです。代わりに、正しい大文字小文字はinstall
です。どうやら、これはMSVCを使用するWindowsでは機能しましたが、UNIXオペレーティングシステムでは機能しません。