# CMakeLists.txtcmake_minimum_required(VERSION3.12)project(ABIDemo)option(USE_NEW_ABI"Use C++11 ABI for static library"ON)# 设置ABI宏定义if(USE_NEW_ABI)set(STATICLIB_ABI_FLAG"-D_GLIBCXX_USE_CXX11_ABI=1")message(STATUS"Using C++11 ABI for static library")else()set(STATICLIB_ABI_FLAG"-D_GLIBCXX_USE_CXX11_ABI=0")message(STATUS"Using old pre-C++11 ABI for static library")endif()# 在编译时可以先解开这部分注释,编译静态库a或者动态库a# 编译可执行文件和动态库B时,注释这部分# add_library(static_lib_a STATIC a.cpp a.h)# target_include_directories(static_lib_a PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})# target_compile_definitions(static_lib_a PUBLIC ${STATICLIB_ABI_FLAG})set(LIBA${CMAKE_SOURCE_DIR}/build_new/libstatic_lib_a.a)# set(LIBA ${CMAKE_SOURCE_DIR}/build_old/libstatic_lib_a.a)add_library(shared_lib_bSHAREDb.cpp)target_include_directories(shared_lib_bPRIVATE${CMAKE_CURRENT_SOURCE_DIR})target_link_libraries(shared_lib_bPRIVATE${LIBA})add_executable(mainmain.cpp)target_link_libraries(mainPRIVATEshared_lib_b)