Я впервые использую C / C ++, а также CMake, так что может быть много чего не так.
Я создал минимальный проект с использованием CMake и libxml2. Это выглядит так:
xmltest/
<br>xmltest/source/
<br>xmltest/source/<b>CMakeLists.txt</b>
<br>xmltest/source/<b>testxml.c</b>
<br>xmltest/source/libxml2/
<br>xmltest/source/libxml2/<b>CMakeLists.txt</b>
<br>xmltest/source/libxml2/<b>lots of source files...</b>
<br>
В xmltest/source/CMakeLists.txt
Я положил:
PROJECT( XMLTEST )
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
ADD_SUBDIRECTORY( libxml2 )
INCLUDE_DIRECTORIES(
"${PROJECT_SOURCE_DIR}"/libxml2/include
)
И xmltest/source/libxml2/CMakeLists.txt
был взят из http://epiar.net/trac/browser/Build/cmake/ThirdParty/LibXml2/CMakeLists.txt. Я оставил это в покое за исключением исправления LIBXML_SRC_FOLDER
.
Остальная часть xmltest/source/libxml2/
была извлечена из http://xmlsoft.org/sources/libxml2-sources-2.7.6.tar.gz.
Я использовал cmake-gui для сборки проекта в xmltest/build/
, и он работал нормально. MinGW скомпилировал его в libxml2.a, и я был горд.
Затем я попытался добавить исполняемый файл #include
ing libxml2.
Я добавил это к основному CMakeLists.txt
:
ADD_EXECUTABLE( xmltest
xmltest.c
)
TARGET_LINK_LIBRARIES( xmltest
xml2
)
и создано xmltest.c
:
#include <libxml/parser.h>
int main()
{
return 0;
}
CMake все еще генерирует его без жалоб, но при компиляции я получаю
fatal error: libxml/parser.h: No such file or directory
Я пробовал несколько вариантов строки #include
:
#include <libxml>
#include <libxml2>
#include <xml2>
#include <libxml/parser.h>
#include <libxml2/parser.h>
#include <xml2/parser.h>
#include "libxml2/include/libxml/parser.h"
но это не помогло. Есть идеи?