我是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将此问题标记为重复。我仍然有问题,所以我已经相应更新了我的问题。