我有项目取决于expat。 我的问题是,我不能链接到expat。 我使用Ubuntu(debian环境),并需要使用cmake来build立一个makefile。
我试图在我的CMakeLists.txt文件中下载源代码和链接:
include_directories( ... ${CMAKE_SOURCE_DIR}/expat-2.1.0/lib ... )
我试图移动.c文件并单独链接到它们:
add_executable(${PROJECT_NAME} ... src/xmlrole.c src/xmltok.c src/xmltok_impl.c src/xmltok_ns.c src/xmlparse.c ... )
虽然这不起作用,并得到,当链接,xmlparse.c中的错误
有人知道如何正确链接CMakeLists.txt文件中的库吗? 是否有必要下载源代码和链接到文件本身(我不能工作)?
是否需要下载源代码或者是否可以链接到运行“sudo apt-get install expat”时创build的“.so – file”?
如果你不需要最新的expat版本,你应该可以使用sudo apt-get install expat
。
如果您想要最新的版本,请下载源代码并解压缩。 然后:
cd <expat root> mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr (default install path is /usr/local) make sudo make install
安装完成后,可以使用CMake的FindEXPAT
模块找到它。
所以例如,
cmake_minimum_required(VERSION 2.8 FATAL_ERROR) project(MyTest) include(FindEXPAT) find_package(EXPAT REQUIRED) include_directories(${EXPAT_INCLUDE_DIRS}) add_executable(${PROJECT_NAME} <list of your source files>) target_link_libraries(${PROJECT_NAME} ${EXPAT_LIBRARIES})
如所说你可以使用
sudo apt-get install expat。
然后在makefile中用
-lexpat
如果存在于$ PATH中,您可以链接到库。
如果安装到不同的路径,你必须做的
-L path_of_the_library -lexpat