@@ -37,22 +37,39 @@ else()
3737 set (srcs_lib ${srcs} )
3838endif ()
3939
40- add_library (cppcheck-core ${srcs_lib} ${hdrs} )
41- target_dll_compile_definitions (simplecpp_objs CPPCHECKLIB_EXPORT CPPCHECKLIB_IMPORT )
40+ if (BUILD_SHARED_LIBS )
41+ add_library (cppcheck-core ${srcs_lib} ${hdrs} )
42+ add_library (cppcheck-core-private ALIAS cppcheck-core )
43+ else ()
44+ # A OBJECT library is used because the auto-registration doesn't work with static libraries
45+ add_library (cppcheck-core-private OBJECT ${srcs_lib} ${hdrs} )
46+ add_library (cppcheck-core INTERFACE )
47+ target_link_libraries (cppcheck-core INTERFACE $<TARGET_OBJECTS :cppcheck -core -private >)
48+ add_dependencies (cppcheck-core cppcheck-core-private )
49+ endif ()
4250if (BUILD_SHARED_LIBS AND MSVC )
4351 target_sources (cppcheck-core PRIVATE version .rc )
4452endif ()
4553
46- target_include_directories (cppcheck-core PUBLIC . )
47- target_link_libraries (cppcheck-core PRIVATE tinyxml2 simplecpp picojson )
54+ target_dll_compile_definitions (cppcheck-core EXPORT CPPCHECKLIB_EXPORT )
55+ target_dll_compile_definitions (cppcheck-core-private IMPORT CPPCHECKLIB_IMPORT )
56+
57+ target_include_directories (cppcheck-core INTERFACE . )
58+ foreach (lib tinyxml2 simplecpp picojson)
59+ if (NOT BUILD_SHARED_LIBS )
60+ target_link_libraries (cppcheck-core INTERFACE $<LINK_ONLY :${lib} >)
61+ endif ()
62+ target_link_libraries (cppcheck-core-private PRIVATE ${lib} )
63+ endforeach ()
4864
4965if (HAVE_RULES)
50- target_include_directories (cppcheck-core SYSTEM PRIVATE ${PCRE_INCLUDE} )
66+ target_include_directories (cppcheck-core-private SYSTEM PRIVATE ${PCRE_INCLUDE} )
5167endif ()
5268if (Boost_FOUND)
53- target_include_directories (cppcheck-core SYSTEM PUBLIC ${Boost_INCLUDE_DIRS} )
69+ target_include_directories (cppcheck-core SYSTEM INTERFACE ${Boost_INCLUDE_DIRS} )
70+ target_include_directories (cppcheck-core-private SYSTEM PRIVATE ${Boost_INCLUDE_DIRS} )
5471endif ()
5572
5673if (NOT CMAKE_DISABLE_PRECOMPILE_HEADERS)
57- target_precompile_headers (cppcheck-core PRIVATE precompiled.h )
74+ target_precompile_headers (cppcheck-core-private PRIVATE precompiled.h )
5875endif ()
0 commit comments