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
Cmake 链接错误--openSSL到libcurl 我用LIcCURL做C++。我的任务是测试Travis CI中的函数。因此,我使用.travis.yml让libcurl-dev和libssl-dev连接到项目。我安装了它们并检查了cURL配置: SSL支持:已启用(OpenSSL)_Cmake_Openssl_Travis Ci_Libcurl - Fatal编程技术网

Cmake 链接错误--openSSL到libcurl 我用LIcCURL做C++。我的任务是测试Travis CI中的函数。因此,我使用.travis.yml让libcurl-dev和libssl-dev连接到项目。我安装了它们并检查了cURL配置: SSL支持:已启用(OpenSSL)

Cmake 链接错误--openSSL到libcurl 我用LIcCURL做C++。我的任务是测试Travis CI中的函数。因此,我使用.travis.yml让libcurl-dev和libssl-dev连接到项目。我安装了它们并检查了cURL配置: SSL支持:已启用(OpenSSL),cmake,openssl,travis-ci,libcurl,Cmake,Openssl,Travis Ci,Libcurl,但当我试图制作主测试文件时,我得到了错误列表(示例) 等等 我唯一能检查的是libcurl工作正常。我把 --没有ssl标志,出现协议错误 我也用过 `- sudo ln -fs /usr/lib/libcurl.so.4 /usr/local/lib/` 避免cmake错误。(我不太擅长UNIX命令,因此这可能是个问题) /p>的C++项目? 编辑: 以下是CMakeLists.txt: cmake_minimum_required(VERSION 2.8) project (Tech

但当我试图制作主测试文件时,我得到了错误列表(示例)

等等

我唯一能检查的是libcurl工作正常。我把
--没有ssl
标志,出现协议错误

我也用过

`- sudo ln -fs /usr/lib/libcurl.so.4 /usr/local/lib/` 
避免cmake错误。(我不太擅长UNIX命令,因此这可能是个问题)

<如何正确地将OpenSSL连接到具有<代码> <代码> > /p>的C++项目? 编辑: 以下是CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)

project (TechProject)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(HEADERS ${PROJECT_SOURCE_DIR}/include/testclass.h)
set(HEADERS ${PROJECT_SOURCE_DIR}/include/catch.hpp)
set(SOURCES ${PROJECT_SOURCE_DIR}/sources/testclass.cpp)



set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)


include_directories(${PROJECT_SOURCE_DIR}/include)

add_library (${PROJECT_NAME} STATIC ${SOURCES})

add_subdirectory(example)
add_subdirectory(tests)

find_library(FOO_LIB libcurl.a)
target_link_libraries(TechProject "${FOO_LIB}")
和测试子目录中的CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)

set(TESTS_FOR_PROJECT TechProject)

project(${TESTS_FOR_PROJECT}_tests)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

option(BUILD_SHARED_LIBS "Build shared instead of static library" OFF)

file(GLOB ${PROJECT_NAME}_sources "${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp")

find_package(${TESTS_FOR_PROJECT})
include_directories(${${TESTS_FOR_PROJECT}_INCLUDE_DIRS}})


include_directories(${CPM_INCLUDE_DIRS})

add_executable(${PROJECT_NAME} ${${PROJECT_NAME}_sources} ${${PROJECT_NAME}_headers})


target_link_libraries(${PROJECT_NAME} ${TESTS_FOR_PROJECT})


add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD
               COMMAND ${CMAKE_COMMAND} -E copy_directory
                   ${CMAKE_CURRENT_SOURCE_DIR}/fixtures $<TARGET_FILE_DIR:${PROJECT_NAME}>)

add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${PROJECT_NAME} -s -r compact WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
cmake_最低要求(2.8版)
设置(针对项目TechProject的测试)
项目(${TESTS\u FOR\u project}\u TESTS)
设置(CMAKE_CXX_标志“${CMAKE_CXX_标志}-std=c++11”)
选项(BUILD_SHARED_LIBS“BUILD SHARED代替static library”关闭)
文件(GLOB${PROJECT\u NAME}{u sources“${CMAKE\u CURRENT\u SOURCE\u DIR}/SOURCE/*.cpp”)
查找_包(${TESTS_FOR_PROJECT})
include_目录(${${TESTS_FOR_PROJECT}{u include_DIRS}})
include_目录(${CPM_include_DIRS})
添加可执行文件(${PROJECT\u NAME}${${PROJECT\u NAME}}{${PROJECT\u NAME}}{u headers})
目标链接库(${PROJECT\u NAME}${TESTS\u FOR\u PROJECT})
添加自定义命令(目标${PROJECT\u NAME}PRE\u BUILD
COMMAND${CMAKE_COMMAND}-E copy_目录
${CMAKE\u CURRENT\u SOURCE\u DIR}/fixtures$)
添加自定义命令(目标${PROJECT_NAME}POST_BUILD命令${PROJECT_NAME}-s-r压缩工作目录${CMAKE_BINARY_DIR}/bin)

没有CMakeLists.txt文件,不容易/不可能了解详细信息。请提供文件。顺便说一句:不知道您的系统是否仍在工作,但您提供的
ln
命令会杀死
/usr/local/lib
目录。右边是sudo ln-s/usr/lib/libcurl.so.4/usr/local/lib/libcurl.soCMakeLists@Th.Thielemann我还找到了避免ln-fs命令的方法,您应该为OpenSSL和cURL使用RPATH。您不应该使用Cmake构建OpenSSL。你必须用C编译器来构建OpenSSL,而不是C++编译器。另请参见OpenSSL wiki上的和。最后,请看。库的顺序很重要,因为LD是单通道链接器。请显示程序
TechProject
的链接命令。链接器是
ld
,因此链接命令应该是以
ld…
开头的命令。Cmake对您隐藏关键信息,因此您需要找到一种方法来获取它。
cmake_minimum_required(VERSION 2.8)

set(TESTS_FOR_PROJECT TechProject)

project(${TESTS_FOR_PROJECT}_tests)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

option(BUILD_SHARED_LIBS "Build shared instead of static library" OFF)

file(GLOB ${PROJECT_NAME}_sources "${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp")

find_package(${TESTS_FOR_PROJECT})
include_directories(${${TESTS_FOR_PROJECT}_INCLUDE_DIRS}})


include_directories(${CPM_INCLUDE_DIRS})

add_executable(${PROJECT_NAME} ${${PROJECT_NAME}_sources} ${${PROJECT_NAME}_headers})


target_link_libraries(${PROJECT_NAME} ${TESTS_FOR_PROJECT})


add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD
               COMMAND ${CMAKE_COMMAND} -E copy_directory
                   ${CMAKE_CURRENT_SOURCE_DIR}/fixtures $<TARGET_FILE_DIR:${PROJECT_NAME}>)

add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${PROJECT_NAME} -s -r compact WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin)