我一直在研究几个小时,但我仍然无法解决我的问题。
这是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语法。