首页 > 解决方案 > clang:错误:使用 CMakelist 时链接器命令失败,退出代码为 1(使用 -v 查看调用)

问题描述

我创建了一个简单的 C++ 程序。我收到链接错误。代码如下。

主文件

#include <iostream>
#include "test.hxx"

int main(void)
{
    testns::testBuff<int, 10> bufferObj;
    bufferObj.reset();
    return 0;
}

测试.cxx

#include <array>
#include <unistd.h>
#include "test.hxx"

namespace testns
{

template <class T, size_t TSize>
void testBuff<T, TSize>::reset()
{
    //reset
}
} //namespace testns

测试.hxx

namespace ringbuff
{

template <class T, size_t TSize>
class testBuff
{
 public:
    explicit testBuff() = default;
    void   reset();
};
} //namespace testns

CMakeLists

CMAKE_MINIMUM_REQUIRED(VERSION 3.8.2)

SET(CMAKE_CXX_STANDARD 20)
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
  
STRING(TOLOWER ${PROJECT_NAME} PROJECT_EXE_NAME)
 
SET(DIR_WORKSPACE ${PROJECT_SOURCE_DIR}/..)
 
SET(DIR_TB ${DIR_WORKSPACE}/TestBuffer)
SET(DIR_TB_INCLUDE ${DIR_TB}/include)
SET(DIR_TB_SRC ${DIR_TB}/src)
 
file (GLOB_RECURSE ALL_TB_CPP_FILES ${DIR_TB_SRC}/*.cxx)

SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> crP <TARGET> <OBJECTS>")
SET(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> rP <TARGET> <OBJECTS>")
 
ADD_EXECUTABLE(${PROJECT_EXE_NAME}
               ${ALL_TB_CPP_FILES}
               )
               
TARGET_INCLUDE_DIRECTORIES(
    ${PROJECT_EXE_NAME} PUBLIC
    ${DIR_TB_INCLUDE}
    ${CMAKE_BINARY_DIR}/include
    ${CMAKE_INSTALL_PREFIX}/include
)
 
TARGET_COMPILE_OPTIONS(
    ${PROJECT_EXE_NAME}
  PRIVATE
    -fvisibility=hidden
    -pipe
    -Wall
    -Werror
    -Wextra
    -Wfloat-conversion
    -Wformat
    -Wformat-security
    -Werror=format-security
)
 
TARGET_LINK_LIBRARIES(
    ${PROJECT_EXE_NAME}
    ${log-lib}
    )
    

错误:链接器错误 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用) make[2]: *** [CMakeFiles/project.dir/build.make:114: project] 错误 1 ​​make[ 1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/project.dir/all] 错误 2 make: *** [Makefile:84: all] 错误 2

我正在使用 clang 编译器。有人可以帮助我缺少什么以及为什么会出现链接器错误吗?

谢谢

标签: c++c++11clang

解决方案


推荐阅读