這是我第一次使用C/C++以及CMake,所以可能會有很多錯誤。我的Cmake libxml2項目出了什麼問題?
我已經使用CMake和libxml2設置了一個最小的項目。它看起來像這樣:
xmltest/
xmltest/source/
xmltest/source/CMakeLists.txt
xmltest/source/testxml.c
xmltest/source/libxml2/
xmltest/source/libxml2/CMakeLists.txt
xmltest/source/libxml2/lots of source files...
在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,我感到很自豪。
然後,我試圖添加一個可執行文件liblml2。
我已將此添加到主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
我已經在上嘗試了一些變化10行:
#include <libxml>
#include <libxml2>
#include <xml2>
#include <libxml/parser.h>
#include <libxml2/parser.h>
#include <xml2/parser.h>
#include "libxml2/include/libxml/parser.h"
但它沒有幫助。有任何想法嗎?
謝謝你的工作!我認爲這些報價搞砸了。如果$ {PROJECT_SOURCE_DIR}有空格,我將它們包括在內,但看起來它們必須圍繞整個路徑:「$ {PROJECT_SOURCE_DIR}/libxml2/include」,可能它們甚至不是必需的。 – Jeff 2012-02-16 19:37:20
我已經用一些解釋更新了我的答案。 – arrowd 2012-02-17 08:51:26