c++ - 仅标头库的 CMake 库问题
问题描述
所以我有一个库,它有两个文件mgparser.hpp
(in include
) 和mgparser.cpp
(in src
),因为我使用的是模板化函数,所以我必须在模板化类型的声明中包含函数的定义。出于这个原因,我在最后mgparser.hpp
添加了#include "mgparser.cpp"
. CMake 代码看起来像这样
cmake_minimum_required(VERSION 3.1)
project(magahttpparser VERSION 0.1)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_library(mgparser STATIC
${CMAKE_SOURCE_DIR}/include/mgparser.hpp
# ${CMAKE_SOURCE_DIR}/src/mgparser.cpp
)
set_target_properties(mgparser PROPERTIES LINKER_LANGUAGE CXX)
target_compile_options(mgparser PUBLIC -Wall)
set_target_properties(mgparser PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_include_directories(mgparser PUBLIC ${CMAKE_SOURCE_DIR}/include)
target_include_directories(mgparser PUBLIC ${CMAKE_SOURCE_DIR}/src)
由于mgparser.cpp
是包含在头文件中的,不需要再编译一次,所以我把它注释掉了,但是这样导致库文件没有形成。我为此找到的一个简单解决方法是在 中创建一个空源文件random.cpp
,src
然后将其添加到add_library
. 这种行为是否有任何原因,如果有,是否有任何适当的解决方法?
解决方案
推荐阅读
- ruby-on-rails - 合并两个活动记录关联轨道
- javascript - 如何根据父节点的类选择复选框?
- google-sheets - 使用 importrange 时如何执行两个计数条件?
- office365 - 获取大于特定数量的用户邮箱文件夹列表
- java - SOAP 代理客户端的 Spring Boot 通用异常处理程序
- html - 无法摆脱 ion-img 图像上的边框
- swift - 如何快速打印变量名?
- javascript - 在 For 循环中创建键值对数组
- javascript - 无法使用 Apps 脚本 (Webhooks) 解析 x-www-form-urlencoded
- amazon-web-services - 如何使 Docker 映像在 Fargate 中运行