CMake无法确定目标的链接器语言:fileloader

时间:2017-08-29 12:58:37

标签: c++ c++11 visual-studio-2015 cmake

我知道在这个主题上已经有一些主题,但是,在阅读了很多主题后,我一直无法找到解决问题的方法。我正在处理文件加载器/解析器,并且是第一次使用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);
    }
}
...

2 个答案:

答案 0 :(得分:3)

HEADER_ONLY_TARGET不是关键字参数。

如果您想要一个仅限标题的库,请使用接口库:

add_library(<name> INTERFACE [IMPORTED [GLOBAL]])

答案 1 :(得分:0)

添加了:     SET_TARGET_PROPERTIES([some name] PROPERTIES LINKER_LANGUAGE C11) 到我的程序结束,错误消失了。在阅读了一百万个网页后,我发现https://kuniganotas.wordpress.com/2011/05/25/error-cmake-can-not-determine-linker-language-for-target/,解决方案就这么简单!希望这可以帮助其他人解决这个错误!