我知道已经有一些关于这个主题的线程,但是,在阅读其中许多线程后,我无法找到解决我的问题的方法。我正在开发文件加载器/解析器,并且是第一次使用 CMake。我的 CMakeList.txt 文件用于导入 XML 解析器 (xerces),当前如下所示:
cmake_minimum_required(VERSION 2.8)
project(fileloader)
set(SRCS
Source.cpp
)
include_directories(./
${SPF_ROOT}/xerces/win64/include/xercesc/dom
)
add_executables(${PROJECT_NAME} ${SRCS})
add_library(HEADER_ONLY_TARGET STATIC XMLString.hpp XercesDOMParser.hpp DOM.hpp HandlerBase.hpp PlatformUtils.hpp)
set_target_properties(HEADER_ONLY_TARGET PROPERTIES LINKER_LANGUAGE CXX)
运行我的解决方案时,我收到的错误是“CMake 无法确定目标的链接器语言:fileloader”
我对 C++ 比较陌生,对 CMake 也很陌生,所以希望我错过了一些简单的东西,但非常感谢任何和所有的帮助!
编辑:
我正在编写的代码位于不支持互联网的计算机上,因此我无法复制和粘贴整个代码,但这是导致问题的例外情况:
...
#include "XMLString.hpp"
#include "XercesDOMParser.hpp"
#include "DOM.hpp"
#include "HandlerBase.hpp"
#include "PlatformUtils.hpp"
class XMLReader : public IFileReader {
public:
XMLReader(){};
void read(std::ifstream& file) {
xerces::XMLPlatformUtils::Initialize();
xercesc::XercesDOMParser* parser = new xercesc::XercesDOMParser();
parser->setValidationScheme(xercesc::XercesDOMParser::Val_Always);
parser->setDoNamespaces(true);
xercesc::ErrorHandler* errHandler = (xercesc::ErrorHandler*) new xercesc::HandlerBase();
parser->setErrorHandler(errHandler);
std::getline(file, line);
newFile = line.c_str();
parser->parse(newFile);
}
}
...
HEADER_ONLY_TARGET
不是关键字参数。
如果您想要一个仅包含头文件的库,请使用接口库:
add_library(<name> INTERFACE [IMPORTED [GLOBAL]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)