外部プロジェクトをダウンロードしているため、ダウンロードしたばかりなので、すべてがどこにあるかが既にわかっているため、「検索」は必要ありません。
add_library で動作するようになりました。これは動作する私の実際のコードです:
ExternalProject_Add(ForexConnectDownload
PREFIX 3rd_party
#--Download step--------------
URL http://fxcodebase.com/bin/forexconnect/1.3.1/ForexConnectAPI-1.3.1-Linux-x86_64.tar.gz
URL_HASH SHA1=7fdb90a2d45085feb8b76167cae419ad4c211d6b
#--Configure step-------------
CONFIGURE_COMMAND ""
#--Build step-----------------
BUILD_COMMAND ""
#--Install step---------------
UPDATE_COMMAND "" # Skip annoying updates for every build
INSTALL_COMMAND ""
)
SET(FXCM_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/3rd_party/src/ForexConnectDownload/include)
SET(FXCM_LIB_DIR ${CMAKE_CURRENT_BINARY_DIR}/3rd_party/src/ForexConnectDownload/lib)
add_library(ForexConnect SHARED IMPORTED)
set_target_properties(ForexConnect PROPERTIES IMPORTED_LOCATION ${FXCM_LIB_DIR}/libForexConnect.so)
そこから、それに依存する各プログラムにadd_dependencies
はもちろん and が必要target_link_libraries
です。例えば:
include_directories(${FXCM_INCLUDE_DIR})
add_executable(syncDatabase syncDatabase.cpp trader/database.cpp trader/fxcm.cpp)
target_link_libraries(syncDatabase ForexConnect)
add_dependencies(syncDatabase ForexConnectDownload)
- include_directories - そこにあるディレクトリを検索するように指示します
- target_link_libraries - 名前を付けたとおりにライブラリを追加するだけです (変数ではありません)。
add_dependencies は、必要なディレクトリを含めようとする前に待機させます。
それは私にとってはうまくいきます。make -j4 で動作します。すべての依存関係を正しく取得します。