Cmake 链接错误--openSSL到libcurl 我用LIcCURL做C++。我的任务是测试Travis CI中的函数。因此,我使用.travis.yml让libcurl-dev和libssl-dev连接到项目。我安装了它们并检查了cURL配置: SSL支持:已启用(OpenSSL)
但当我试图制作主测试文件时,我得到了错误列表(示例) 等等 我唯一能检查的是libcurl工作正常。我把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
--没有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)