2016-12-17 88 views
-1

我想運行travis測試,但我得到以下錯誤。錯誤「沒有規則,使目標...」

我檢查了我的文件和目錄,所有的文件都存在。

我想我的錯誤在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

它的github項目爲https://travis-ci.org – Kayrosik

+0

這是在Travis日誌中的錯誤 – Kayrosik

回答

1

命令enable_testing()除其他之外創建目標test。但是你已經有了與同名的圖書館目標。這混淆了CMake。爲避免這種情況,重命名庫目標爲

此外,建議不要將目標名稱與項目相同。所以,重命名項目也是

+0

謝謝,還有一個問題,我有github項目「測試」目錄與「init.cpp」文件,其中包括文件「包括/client.hpp」。文件「client.hpp」使用boost庫,你可以在我的代碼中看到我試圖用文件「init.cpp」開始測試,但不幸的是我在travis日誌init.cpp :(.text + 0x8d4) :未定義對'boost :: filesystem :: path :: extension()const'的引用' – Kayrosik

+0

'find_package(Boost)'僅對Boost的核心部分*進行交互。對於使用* filesystem *組件,您需要通知'find_package()':'find_package(Boost COMPONENTS filesystem)'。 – Tsyvarev

相關問題