3

*これについて多くの質問があることは知っていますが、CMakeについて話すときはあまり役に立たないため、質問をするという私の決定*

そのため、コンパイラにパラメーターをインポートして与えるためにCMakeを使用するCLionに取り組んでおり、「ExternalLibraries」というフォルダーにある外部ライブラリ(シリアル:クラスをjsonファイルにシリアル化する)を正常にインクルード(インポート)しました私のプロジェクトフォルダーのルート。IDEを再起動してコードを再度実行しようとするまで、問題なく動作していました...コンパイルエラーが返されました(と思います)。

私の CMake ファイルは次のようになります。

cmake_minimum_required(VERSION 3.3)
project(xMemory)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

include_directories ("${PROJECT_SOURCE_DIR}/ExternalLibraries/cereal-1.1.2/include/")

set(SOURCE_FILES main.cpp xObject.cpp xObject.h)
add_executable(xMemory ${SOURCE_FILES})
target_link_libraries (xMemory cereal)

そして、シェルを実行/コンパイルしようとすると、次のようになります。

/home/lunaticsoul/Documents/clion-1.2.4/bin/cmake/bin/cmake --build /home/lunaticsoul/.CLion12/system/cmake/generated/95701c38/95701c38/Debug0 --target xMemory -- -j 4
Scanning dependencies of target xMemory
[ 33%] Building CXX object CMakeFiles/xMemory.dir/xObject.cpp.o
[ 66%] Building CXX object CMakeFiles/xMemory.dir/main.cpp.o
[100%] Linking CXX executable xMemory
/usr/bin/ld: cannot find -lcereal
collect2: error: ld returned 1 exit status
make[3]: *** [xMemory] Error 1
make[2]: *** [CMakeFiles/xMemory.dir/all] Error 2
make[1]: *** [CMakeFiles/xMemory.dir/rule] Error 2
make: *** [xMemory] Error 2

ライブラリが実際にコードにインポートされているように見えるため、何が起こっているのかわかりません (シリアルを含めると赤い文字はありません)。

私のCMakeファイルに何か問題があるかどうか誰かに教えてもらえますか?

PD: 誰かがそれを必要とする場合に備えて、これはスクリーンショットです。

PD2: 私は基本的な os を使用しています: Freya (Ubuntu 14.04)

ここに画像の説明を入力

4

3 に答える 3

4

使用する必要があります

link_directories(directory1 directory2 ...)

ライブラリディレクトリを指定するディレクティブ。

https://cmake.org/cmake/help/v3.0/command/link_directories.html

于 2016-03-22T11:51:51.973 に答える