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

这是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语法中 .