c++ - 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 编译器。有人可以帮助我缺少什么以及为什么会出现链接器错误吗?
谢谢
解决方案
推荐阅读
- django - 如何在 Vuejs 项目中实现 Agora 上的视频录制功能?
- artifactory - 多个 Artifactory 存储库的公共工件是否只存储一次?
- python - 尝试通过 python 获取电子邮件
- html - 延迟加载子组件
- sql-server-2008 - 多语句表值函数问题
- javascript - JS Grocerylist / 项目为空
- reactjs - React:当类的状态改变时防止自动刷新
- python - 我可以在 python 中使用 444RGB 或 555RGB 吗?
- logstash - 如何在logstash中转换格式“yyyy-MM-dd HH:mm:ss
- java - Selenium 动作多线程