2016-12-17 24 views
-1

私はtravis testを実行しようとしていますが、次のエラーが発生します。エラー "ターゲットを作成するルールがありません"

ファイルとディレクトリをチェックしたところ、すべてのファイルが存在します。

私はcmakeファイルの間違いだと思いますが、見つけられません。 誰かが私を助けることができますか?

make [1]:***ターゲットを作成するルールがありません。CMakeFiles/test.dir/all', needed by CMakeFiles/Examples.dir/all 'です。やめる。

cmake_minimum_required(VERSION 2.8.7) 

project(test) 

set(CMAKE_CXX_STANDARD 11) 
set(CMAKE_CXX_STANDARD_REQUIRED ON) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED ON) 
set(Boost_USE_STATIC_RUNTIME OFF) 

option(BUILD_SHARED_LIBS "Build shared instead of static library" OFF) 
option(BUILD_TESTS "Build tests for webdavclient" ON) 

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/tests/ /sources) 
add_library(test STATIC ${CMAKE_CURRENT_SOURCE_DIR}/sources/client.cpp tests/main.cpp) 

find_package(OpenSSL REQUIRED) 
find_package(Boost REQUIRED) 
find_package(CURL REQUIRED) 
include_directories(${CURL_INCLUDE_DIR}) 

if(Boost_FOUND) 
    include_directories(${Boost_INCLUDE_DIRS}) 
    target_link_libraries(test ${Boost_LIBRARIES}) 
endif() 

if(UNIX) 
    set(DEPENDS_LIBRARIES ${OPENSSL_LIBRARIES} ${CURL_LIBRARY} ${Boost_LIBRARIES}) 
elseif(MSVC) 
    set(DEPENDS_LIBRARIES ${OPENSSL_LIBRARIES} ${CURL_LIBRARY} ${Boost_LIBRARIES} ws2_32) 
endif() 

add_executable(Examples ${CMAKE_CURRENT_SOURCE_DIR}/examples/main.cpp) 
target_link_libraries(Examples ${PROJECT_NAME} ${DEPENDS_LIBRARIES}) 

if(BUILD_TESTS) 
    enable_testing() 
    file(GLOB ${PROJECT_NAME}_TEST_SOURCES tests/*.cpp) 
    add_executable(init ${${PROJECT_NAME}_TEST_SOURCES}) 
    target_link_libraries(init ${PROJECT_NAME} ${DEPENDS_LIBRARIES}) 
    add_test(NAME init COMMAND init "-s" "-r" "compact" "--use-colour" "yes") 
endif() 
+0

CMakeを実行しましたか?ビルドディレクトリでMakefileを起動しますか?あなたの発電機は本当にMAkefilesのためですか? Makefileは終了しますか? 「次のエラー」はどこですか? – usr1234567

+0

https://travis-ci.orgのgithubプロジェクトです – Kayrosik

+0

トラvisログにエラーがあります – Kayrosik

答えて

1

コマンドenable_testing()は、ターゲットtestを作成します。しかし、あなたはすでに図書を持っています。これはCMakeを混乱させる。これを避けるには、ライブラリの名前を変更する

また、プロジェクトと同じターゲット名を持つことはお勧めしません。したがって、プロジェクトの名前を変更してもです。

+0

ありがとうございます、私はgithubプロジェクトのディレクトリに "init.cpp"ファイルを含むテストを "include"しています/client.hpp "を参照してください。ファイル "client.hpp"はブーストライブラリを使用しているので、コード "init.cpp"でテストを開始しようとしていることをコードで確認できますが、残念ながらトラビスログinit.cppでエラーが発生します:(。text + 0x8d4) : 'boost :: filesystem :: path :: extension()const 'への未定義の参照。 – Kayrosik

+0

' find_package(Boost) 'は、ブーストのコア部分*との相互作用のみを構成します。 * filesystem *コンポーネントを使用するには、find_package()にその情報を伝える必要があります: 'find_package(ファイルシステムをブーストする)'。 – Tsyvarev

関連する問題