我的项目取决于expat。我的问题是我无法链接到expat。我使用Ubuntu(debian环境)并且需要使用cmake来构建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”时创建的“.so - file”?
答案 0 :(得分:4)
如果您不需要最新的expat版本,则应该可以使用sudo apt-get install expat
。
如果您想要最新版本download the source并提取它。然后:
cd <expat root>
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr (default install path is /usr/local)
make
sudo make install
安装完成后,您可以使用CMake FindEXPAT
module找到它。
例如,
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})
答案 1 :(得分:2)
如上所述,您可以使用
sudo apt-get install expat。
然后在带有
的makefile中-lexpat
如果存在于$ PATH中,您可以链接到库。
如果安装到您必须执行的其他路径
-L path_of_the_library -lexpat