4

我有一个依赖外籍人士的项目。我的问题是我无法链接到外籍人士。我使用的是 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 - 文件”?

4

2 回答 2

4

如果您不需要最新的 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

FindEXPAT安装后,您可以使用 CMake 的模块找到它。

例如,

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})
于 2012-06-02T10:53:44.647 回答
2

如前所述,您可以使用

sudo apt-get 安装外籍人士。

然后在makefile中

-lexpat

如果 $PATH 中存在,您可以链接到该库。

如果安装到不同的路径,你必须做

-L path_of_the_library -lexpat

于 2013-07-30T11:06:26.897 回答