2016-12-17 92 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

相关问题