Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误“;没有制定目标的规则…”;_C++_Cmake - Fatal编程技术网

C++ 错误“;没有制定目标的规则…”;

C++ 错误“;没有制定目标的规则…”;,c++,cmake,C++,Cmake,我正在尝试运行travis测试,但出现以下错误 我检查了我的文件和目录,所有文件都存在 我想我在cmake文件中犯了错误,但我找不到。 也许有人能帮我 make[1]:***没有规则生成目标CMakeFiles/test.dir/all',这是CMakeFiles/Examples.dir/all'所需的。停下来 cmake_minimum_required(VERSION 2.8.7) project(test) set(CMAKE_CXX_STANDARD 11) set(CMAKE_C

我正在尝试运行travis测试,但出现以下错误

我检查了我的文件和目录,所有文件都存在

我想我在cmake文件中犯了错误,但我找不到。 也许有人能帮我

make[1]:***没有规则生成目标
CMakeFiles/test.dir/all',这是
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()

命令
enable_testing()
以及其他创建目标
test
。但您已经有了同名的库目标。这让CMake感到困惑。为了避免这种情况,请重命名库目标


此外,不建议将目标名称与项目名称相同。因此,也可以重命名项目。

命令
启用测试()
以及其他创建目标
测试的操作。但您已经有了同名的库目标。这让CMake感到困惑。为了避免这种情况,请重命名库目标


此外,不建议将目标名称与项目名称相同。所以,也重命名project。

您运行过CMake吗?是否在生成目录中调用Makefile?你的生成器真的是用来生成文件的吗?生成文件是否退出?“以下错误”在哪里?这是github项目,因为它在travis logsHave中出错,您运行CMake吗?是否在生成目录中调用Makefile?你的生成器真的是用来生成文件的吗?生成文件是否退出?“以下错误”在哪里?这是github项目,因为它在travis logsThank you中出错。还有一个问题,我在github项目的“tests”目录中有一个“init.cpp”文件,其中包括文件“include/client.hpp”。文件“client.hpp”使用boost库,您可以在我的代码中看到我试图用文件“init.cpp”开始测试,但不幸的是,我在travis日志init.cpp:(.text+0x8d4):未定义对`boost::filesystem::path::extension()const'
的引用只组织与boost核心部分的交互。要使用文件系统组件,您需要通知
find_-package()
find_-package(Boost-COMPONENTS-filesystem)
。建议不要将目标名称与项目名称相同。为什么?@penghegong:我读到一些情况,一些CMake生成器可能会在项目和目标名称相同的情况下表现不正确。不过,我无法提供此类讨论的链接。谢谢,还有一个问题,我在github项目“tests”中有一个目录,其中包含“init.cpp”文件,其中包括文件“include/client.hpp”。文件“client.hpp”使用boost库,您可以在我的代码中看到我试图用文件“init.cpp”开始测试,但不幸的是,我在travis日志init.cpp:(.text+0x8d4):未定义对`boost::filesystem::path::extension()const'
的引用只组织与boost核心部分的交互。要使用文件系统组件,您需要通知
find_-package()
find_-package(Boost-COMPONENTS-filesystem)
。建议不要将目标名称与项目名称相同。为什么?@penghegong:我读到一些情况,一些CMake生成器可能会在项目和目标名称相同的情况下表现不正确。然而,我无法给出与此类讨论的联系。