【发布时间】:2020-08-12 17:29:57
【问题描述】:
我是使用 CMake 构建的新手。我正在使用 Ubuntu,并且我有一个 .cpp 文件(比如 xyz.cpp 位于 ~/mydir 中的某处),它链接到三个自定义共享库(libA.so、libB.so 和 libC.so 库)。这三个 *.so 文件位于/usr/local/lib。
我想创建一个 CMakeLists.txt 来编译它。下面的脚本会抛出如下错误:
cmake_minimum_required(VERSION 3.11)
project(xyz VERSION 1.0.0 LANGUAGES C CXX)
# Set C standard to C11
set(CMAKE_C_STANDARD 11)
set(SOURCES src/xyz.cpp)
include_directories(/usr/local/include)
#For the shared library:
target_link_libraries(libA -L/usr/local/lib/)
target_link_libraries(libB -L/usr/local/lib/)
target_link_libraries(libC -L/usr/local/lib/)
target_link_libraries(xyz libA libB libC )
add_executable(xyz src/xyz.cpp)
错误:
CMake Error at CMakeLists.txt: (target_link_libraries):
Cannot specify link libraries for target "libA" which is not built
by this project.
-- Configuring incomplete, errors occurred!
【问题讨论】:
-
1)
target_link_libraries应该跟随add_executable; 2)你根本不需要target_link_libraries(libA...); 3) 添加链接目录,使用target_link_directories.