我知道已经有一些关于这个主题的话题,但是,在阅读了其中的许多话题之后,我无法找到解决我的问题的方法。我正在研究文件加载器/解析器,并且是第一次使用 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
不是关键字参数。
如果你想要一个只有头文件的库,使用一个接口(interface)库:
add_library(<name> INTERFACE [IMPORTED [GLOBAL]])
关于c++ - CMake 无法确定目标 : fileloader 的链接器语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45939835/