如何将cmake项目作为库添加到另一个cmake项目?

时间:2017-02-20 14:59:28

标签: c++ cmake

我一直在研究几个小时,但我仍然无法解决我的问题。

这是ProjectA的Cmakelist。它非常有效:

cmake_minimum_required(VERSION 3.5)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
project(ProjectA C CXX)
add_executable(ProjectA ${SOURCE_FILES_ProjectA})
target_link_libraries(ProjectA hts ${ZLIB} pthread)
target_compile_definitions(ProjectA PUBLIC -D_FILE_OFFSET_BITS=64 -DVERSION=\"${VERSION_STRING}\")

现在我想将ProjectA作为库添加到ProjectB中,但我首先得到了以下错误:

  

add_executable无法创建目标“ProjectA”,因为另一个     具有相同名称的目标已存在。现有目标是静态的     在源目录中创建的库

然后,我将如下更改projectB的cmakelist。现在创建了makefile但它不起作用。 (为简单起见,我删除了set(source_files))

ProjectB cmakelist:

include_directories(
${PROJECT_SOURCE_DIR}/lib
${PROJECT_SOURCE_DIR}/
${PROJECT_SOURCE_DIR}/lib/ProjectA)
add_library(ProjectA STATIC lib/ProjectA/src})
target_include_directories(ProjectA PUBLIC lib/ProjectA)
set_target_properties(ProjectA PROPERTIES LINKER_LANGUAGE CXX)

add_executable(ProjectB ${SOURCE_FILES})
target_link_libraries(ProjectB hts ${ZLIB} ProjectA pthread)
target_compile_definitions(ProjectB PUBLIC -D_FILE_OFFSET_BITS=64 -DVERSION=\"${VERSION_STRING}\")

你能纠正我的cmakelist文件,我真的迷失了cmake语法。

0 个答案:

没有答案