【发布时间】:2020-05-10 08:22:43
【问题描述】:
我的项目结构如下:
root
-CMakeLists.txt
----exec
-----CMakeLists.txt
-----src
------a.cpp
------a.h
----lib
-----CMakeLists.txt
-----src
------b.cpp
-----inc
------b.h
执行目标取决于lib 目标。我的主要 CMakeLists.txt 如下:
cmake_minimum_required(VERSION 2.8)
cmake_policy(SET CMP0048 NEW)
project(FOO CXX)
add_subdirectory(lib)
add_subdirectory(exec)
在库的 CMakeLists.txt 中,我使用 add_library() 并在 exec 文件夹中使用 add_executable()。问题是可执行文件找不到库,我不知道如何在 exec CMakeLists.txt 中说存在另一个名为 lib 的目标,这是一个要使用的库。我想我在项目配置中遗漏了一些东西。
Lib CmakeLists.txt
cmake_minimum_required(VERSION 2.8)
cmake_policy(SET CMP0048 NEW)
project(BASIC CXX)
add_library(BASIC src/b.cpp)
set(HEADERS_FILE_DIRS inc)
include_directories(${HEADERS_FILE_DIRS})
#Linking
target_link_libraries(BASIC pthread)
执行 CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
cmake_policy(SET CMP0048 NEW)
project(EXEC CXX)
add_executable(EXEC src/a.cpp)
set(HEADERS_FILE_DIRS src ${CMAKE_CURRENT_SOURCE_DIR}/../lib/inc)
include_directories(${HEADERS_FILE_DIRS})
set_target_properties(EXEC PROPERTIES OUTPUT_NAME "EXEC")
find_library(BASIC_LIBRARY BASIC HINTS <ABS PATH HERE>/lib)
#Linking
target_link_libraries(EXEC pthread ${BASIC_LIBRARY})
【问题讨论】:
-
附加 lib/CMakeLists.txt 和 exec/CMakeLists.txt
-
请显示代码而不是描述它。
-
我添加了所需的信息
-
删除 find_library 行并使用 target_link_libraries(EXEC BASIC)