CMAKE:从父目录链接库

  • 本文关键字:链接 CMAKE cmake
  • 更新时间 :
  • 英文 :


所以这是我的树目录:

*common_folder

*main1_folder---CMakeLists.txt & file1.c & files2.c
*
*main2_folder
*
*common_librayX---file_libraryX.c (and header)
*
*common_libraryY--file_libraryY.c (and header)

所以我想做的是模拟以下行:gcc-Wall-o MAIN文件1.c文件2.c文件_libraryX.c文件_library Y.c

以下是我如何使用我的CMakeLists.txt:

cmake_minimum_required(VERSION 3.0.0)
#Déclaration du projet
project(MAIN1 VERSION 1.0)
#Include headers
get_filename_component(PARENT_DIR ../ ABSOLUTE)
include_directories(${PARENT_DIR}/commonlibrayX)
include_directories(${PARENT_DIR}/commonlibraryY)
add_executable(
MAIN1
file1.c
file2.c
file_libraryX.c
file_libraryY.c
)
install (TARGETS Project DESTINATION bin)

当然,我最终会遇到一个错误,即它找不到文件file_libraryX.c和file_library y.c。

我到处都查过了,我似乎根本不明白如何包含来自不同目录的库(而不是头(,而不是当前目录的CMakeLists.txt。在我的情况下,是父目录。

另外,我之所以在树目录中没有更高级别的CMakeLists.txt,是因为我想在每个主文件夹中创建不同的二进制文件,而不必重写CMakeList.txt。它们碰巧共享公共库。

有人能帮帮我吗?

现代CMake方法是:

common_folder/CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)
project(MAIN1 VERSION 1.0)
add_subdirectory(common_librayX)
add_subdirectory(common_librayY)
add_subdirectory(main1_folder)

common_folder/common_librayX/CMakeLists.txt

add_library(LIBX STATIC file_libraryX.c)
target_include_directories(LIBX PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

common_folder/common_librayY/CMakeLists.txt

add_library(LIBY STATIC file_libraryY.c)
target_include_directories(LIBY PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

common_folder/main1_folder/CMakeLists.txt

add_executable(MAIN1 file1.c file2.c)
target_link_libraries(MAIN1 PRIVATE LIBX LIBY)

建设项目:

mkdir build
cd build
cmake ..
cmake --build .

最新更新