xerces c ++ и cmake

я пытаюсь построить небольшой пример Xerces с xerces c ++ 3.1 и cmake, но у меня только проблемы с линковками.
Это мой cmkelists.txt:

//============================================================================
project(ConfiguradorXerces)
cmake_minimum_required(VERSION 2.8)
include_directories (/home/ricardo/Desktop/librerias/xerces/xerces-c-3.1.1/src)
link_directories (/home/ricardo/Desktop/librerias/xerces/xerces-c-3.1.1/src/.libs)
link_directories (/home/ricardo/Desktop/librerias/xerces/xerces-c-3.1.1/src/)
set ( XercesLib  xerces-c )
aux_source_directory(. SRC_LIST)

add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(${XercesLib})
//==============================================

// ===============================================

#include <iostream>
#include <xercesc/util/PlatformUtils.hpp>
using namespace xercesc;
using namespace std;
int main()
{
try {
XMLPlatformUtils::Initialize();
}
catch (const XMLException& toCatch) {
// Do your failure processing here
return 1;
}

// Do your actual work with Xerces-C++ here.

XMLPlatformUtils::Terminate();

// Other terminations and cleanup.
return 0;
}

// ==============================================

и это мой вывод консоли:

CMakeFiles/ConfiguradorXerces.dir/main.cpp.o: In function `main':
main.cpp:(.text+0x25): undefined reference to `xercesc_3_1::XMLUni::fgXercescDefaultLocale'
main.cpp:(.text+0x2a): undefined reference to `xercesc_3_1::XMLPlatformUtils::Initialize(char const*, char const*, xercesc_3_1::PanicHandler*, xercesc_3_1::MemoryManager*)'
main.cpp:(.text+0x2f): undefined reference to `xercesc_3_1::XMLPlatformUtils::Terminate()'
CMakeFiles/ConfiguradorXerces.dir/main.cpp.o:(.gcc_except_table+0x10): undefined reference to `typeinfo for xercesc_3_1::XMLException'
collect2: error: ld returned 1 exit status
make[2]: *** [ConfiguradorXerces] Error 1
make[1]: *** [CMakeFiles/ConfiguradorXerces.dir/all] Error 2
make: *** [all] Error 2
16:28:55: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project ConfiguradorXerces (target: Desktop)
When executing step 'Make'

//
я думал, что мой cmakeLsits.txt не был завершен, есть особая настройка, что это должно быть сделано ??
спасибо заранее

4

Решение

Я уверен, что target_link_libraries() макрос принимает цель в качестве первого параметра:

  target_link_libraries(<target> [item1 [item2 [...]]]
[[debug|optimized|general] <item>] ...)

И вы забыли указать это. Так что вместо target_link_libraries(${XercesLib}), пытаться target_link_libraries(${PROJECT_NAME} ${XercesLib}),

Надеюсь, это решит это.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]