2013-01-22 58 views
4

我尝试用xerces C++ 3.1和cmake构建Xerces的一个小例子,但是我只能得到连接问题。 这是我cmkelists.txt:xerces C++和cmake

//============================================================================ 
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' 

// 我很瘦国王trhat我的cmakeLsits.txt不完整,有一个特殊的设置,它必须完成? THX提前

+0

小心分享您的CMake配置? – dhardy

回答

2

我敢肯定,target_link_libraries()宏接受一个目标作为其第一个参数:

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

而且你已经忘了指定它。因此,而不是target_link_libraries(${XercesLib}),请尝试target_link_libraries(${PROJECT_NAME} ${XercesLib})

希望能解决这个问题。

+0

我的错误,thx! –