私は外部ライブラリを使用するプロジェクトを持っています。プロジェクトのCMakeLists.txtは次のようになります。このようなCMake:外部プロジェクトを再構築
cmake_minimum_required(VERSION 3.6.0)
project(my-project)
set(CMAKE_CXX_STANDARD 14)
include(ExternalProject)
find_package(Git REQUIRED)
ExternalProject_Add(library
PREFIX ${my-project_SOURCE_DIR}/lib/library
GIT_REPOSITORY https://github.com/vendor/library
GIT_TAG master
UPDATE_COMMAND ""
INSTALL_COMMAND ""
)
link_directories(${my-project_SOURCE_DIR}/lib/library/src/library-build/src)
add_subdirectory(src)
およびSrc/CMakeLists.txt:
include_directories(../lib/library/src/library/include)
add_executable(my-project
main.cpp
)
add_dependencies(my-project library)
target_link_libraries(my-project liblibrary.a)
それはGitリポジトリからライブラリを引き出し、何の問題もなく、初めてそれを構築します。
ライブラリのソースコードを編集し、ライブラリ.aファイルを自動的に再コンパイルしたいと考えています。私はそれを達成する最もクリーンな方法は何ですか?現在、ライブラリの.aファイルがあるため、ソースコードの更新はすべて無視されます。
私は私のメインCMakeLists.txtに
add_subdirectory(lib/library/src/library/src)
を追加しようとすると、私は次のエラーを取得する:LIB /ライブラリ/ SRC /ライブラリ/ SRC/CMakeLists.txtで
CMakeのエラー: 55(add_library):add_libraryは、同じ名前の別のターゲットがすでに存在するため、ターゲット "library"を作成できません。既存のターゲットは、ソースディレクトリ "/ cygdrive/c/Code/my-project"で作成されたカスタムターゲットです。詳細については、ポリシーCMP0002の文書を参照してください。
私はそれは、ライブラリCMakeLists.txtで
add_library(gram STATIC ${SOURCE_FILES})
を呼び出すし、プロジェクトCMakeLists.txtで
ExternalProject_Add(library ...)
を呼び出すことによって引き起こされていますね。
アイデア? ExternalProject_Add
を使用するためのあなたの主な目標は設定して、それを構築することなく、外部ソースから依存関係をダウンロードすることであるとして
他のライブラリ( 'add_subdirectory()')または 'ExternalProject_add()'を含めてください。エラーメッセージは、理解するのが簡単です。 –
ご覧のとおり、私はすでに 'ExternalProject_add()'を使っていますが、望み通りに動作していません。 'add_subdirectory()'のみでは、CVSからライブラリをクローンしません。 –