如何使用CMake导入库?以及如何将构建文件放在build /中?

时间:2019-08-05 18:39:00

标签: c++ cmake cmake-gui

我是CMake的新手。

如何用我需要的某些库编译C ++程序?

如何设置它,以便所有构建文件最终都位于最终可执行文件以外的特定目录中?

我不知道第二个问题。对于第一个问题:

  • 我尝试使用find_library(),但这太令人困惑了。

  • This question正在处理.h文件。我正在处理.a,.la和.so文件。

项目结构($ tree):https://pastebin.com/BcH0J0Fs
请注意lib/文件夹。可能是那里的东西弄乱了,但我不确定。

CMakeLists.txt

# [...]

# set directories
include_directories(${CMAKE_SOURCE_DIR}/include)
link_directories(${CMAKE_SOURCE_DIR}/lib)

# create the executable
add_executable(projectName ${PROJECT_SOURCE_DIR}/src/projectName.cpp)

# add libraries
target_link_libraries(projectName Magick++-7 nbt++)

CMake GUI:

源代码:[...]/projectName
构建二进制文件:[...]/projectName/bin
CMAKE_BUILD_TYPE:{空白}
CMAKE_INSTALL_PREFIX[...]/projectName

projectName.cpp只是现在只打印一些文本。

CMake生成没有问题,但是运行make会输出以下内容:

[...]/projectName/bin$ make
[ 50%] Linking CXX executable projectName
/usr/bin/ld: cannot find -lMagick++-7
collect2: error: ld returned 1 exit status
CMakeFiles/projectName.dir/build.make:94: recipe for target 'projectName' failed
make[2]: *** [projectName] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/projectName.dir/all' failed
make[1]: *** [CMakeFiles/projectName.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

删除/注释CMakeLists.txt的最后一行将使它的制作没有问题,但显然没有我需要的库。

正如您从pastebin中看到的那样,所有构建文件都以bin/结尾。我不要这个我希望构建文件位于build/中,而仅最终可执行文件位于bin/中。


编辑:我读过this question & answer,Navta Pei将此问题标记为重复。我仍然有问题,所以我已经相应更新了我的问题。

0 个答案:

没有答案