【发布时间】:2017-03-15 16:23:36
【问题描述】:
我有这个目录结构:
├── 仓
├── 建造
├── 计算器
│ ├── 构建
│ ├── 计算器.c
│ └── CMakeLists.txt
├── CMakeLists.txt
├── 计算
│ ├── 构建
│ ├── CMakeLists.txt
│ ├── compcalc.c
│ └── compcalc.h
├── 包括
│ └── 计算器.h
├── 对象
│ ├── libcompcalc.a
│ └── libsimpcalc.a
├── 简单计算
│ ├── 构建
│ ├── CMakeLists.txt
│ ├── simpcalc.c
│ └── simpcalc.h
simpcalc 和 compcalc 构建良好,运行“make install”后,文件被放入 /obj 目录。
但是当我尝试构建计算器时,出现以下错误:
/usr/bin/ld: cannot find -lsimpcalc
/usr/bin/ld: cannot find -lcompcalc
CMakefile.txt 是:
cmake_minimum_required(VERSION 2.8.9)
project(calculator)
set(CMAKE_BUILD_TYPE Release)
include_directories(../include)
file(GLOB SOURCES "*.c")
set ( PROJECT_LINK_LIBS libsimpcalc.a libcompcalc.a)
link_directories({calculator_SOURCE_DIR}/../obj )
add_executable(calculator ${SOURCES})
target_link_libraries(calculator ${PROJECT_LINK_LIBS} )
不知道为什么在CMakeLists.txt 中寻找simpcalc 我特意说libsimpcalc.a。
【问题讨论】:
-
您知道库文件的完整路径,最好在
target_link_libraries()调用:set(PROJECT_LINK_LIBS ${calculator_SOURCE_DIR}/../obj/libsimpcalc.a ${calculator_SOURCE_DIR}/../obj/libcompcalc.a)中使用它。顺便说一句,您在link_directories()电话中忘记了$符号。 Stack Overflow 上格式化代码/消息的提示:选择代码/文本并使用{}按钮或Ctrl+K。 -
缺少的“$”解决了这个问题!我一直在看那个并在网上搜索了2天!谢谢