2017-02-25 23 views
0

では動作しませんが、次のCMakeLists.txtcmakeの:add_dependenciesは外部プロジェクト

cmake_minimum_required(VERSION 3.0) 
project(xyz) 

include(ExternalProject) 

set(EXTSRC ${CMAKE_SOURCE_DIR}/external) 

ExternalProject_Add(q 
    GIT_REPOSITORY 
     "https://github.com/sftrabbit/CppSamples-Samples.git" 
    SOURCE_DIR ${EXTSRC} 
    CONFIGURE_COMMAND "" 
    BUILD_COMMAND "" 
    INSTALL_COMMAND "") 

add_executable(xyzbin 
    ${EXTSRC}/1-common-tasks/ranges/range-iteration.cpp) 

add_dependencies(xyzbin q) 

私は外部のプロジェクトファイルを最初にダウンロードした後、私の実行可能な目標を設定することが開始されることを期待を考えてみましょう。しかし、そうではありません。

私は実行「cmakeのを..」ソースディレクトリ内のビルドディレクトリで、それが得られます。

(usual configure stuff above ....) 
-- Check for working CXX compiler: /usr/bin/c++ -- works 
-- Detecting CXX compiler ABI info 
-- Detecting CXX compiler ABI info - done 
-- Detecting CXX compile features 
-- Detecting CXX compile features - done 
-- Configuring done 
CMake Error at CMakeLists.txt:16 (add_executable): 
    Cannot find source file: 

    /home/janberq/Desktop/cmake_problem/external/1-common-tasks/ranges/range-iteration.cpp 

    Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp 
    .hxx .in .txx 


CMake Error: CMake can not determine linker language for target: xyzbin 
CMake Error: Cannot determine link language for target "xyzbin". 
-- Generating done 
-- Build files have been written to: /home/janberq/Desktop/cmake_problem/build 

cmakeのが最初という点では不可能であるリンカー言語を取得しようと、同じように思え私はソースファイルを持っていないので、ケース。

私は

set_target_properties(xyzbin PROPERTIES LINKER_LANGUAGE CXX) 

、追加しようとしたが、それは残念ながら、まったく動作しませんでした。そのエラーを修正するにはどうすればよいですか?

P.S.私のcmakeのバージョンは3.5.2、os:ubuntu 16.10です。

+0

[ハウツーはCMakeのサードパーティプロジェクトからの選択されたソースを含めることができます](http://stackoverflow.com/questions/29041008/howto-include-selected-sources-from-third-party-project-in-cmake ) – Tsyvarev

答えて

0

ExternalProject_Addを追加します。 makeを行うまでは何もしません。

設定する前にリポジトリをダウンロードするには、明示的にCMakeに指示する必要があります。または、setup.shスクリプトを作成して依存関係をダウンロードし、直後にcmakeを実行することもできます。

関連する問題