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 installexpat」の実行時に作成される「.so--file」にリンクすることは可能ですか?

4

2 に答える 2

4

最新のエクスパットバージョンが必要ない場合は、を使用できるはずです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})
于 2012-06-02T10:53:44.647 に答える
2

言ったようにあなたは使うことができます

sudo apt-getinstallexpat。

次に、makefileで

-lexpat

$ PATHに存在する場合は、ライブラリにリンクできます。

が別のパスにインストールされている場合は、

-L path_of_the_library -lexpat

于 2013-07-30T11:06:26.897 に答える