diff --git a/CMakeLists.txt b/CMakeLists.txt index 3595154f7ae..91f4ee23119 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,7 +109,6 @@ if(USE_BUNDLED_TINYXML2) add_subdirectory(externals/tinyxml2) endif() add_subdirectory(externals/simplecpp) -add_subdirectory(externals/picojson) add_subdirectory(lib) # CppCheck Library add_subdirectory(frontend) add_subdirectory(cli) # Client application diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 2664a29a65d..8ea47196350 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -1,29 +1,54 @@ +if (BUILD_CLI) -file(GLOB hdrs "*.h") -file(GLOB srcs "*.cpp") -file(GLOB mainfile "main.cpp") -list(REMOVE_ITEM srcs ${mainfile}) + file(GLOB hdrs "*.h") + file(GLOB srcs "*.cpp") + file(GLOB mainfile "main.cpp") + list(REMOVE_ITEM srcs ${mainfile}) -add_library(cli ${hdrs} ${srcs}) -target_include_directories(cli PUBLIC .) -target_link_libraries(cli PRIVATE cppcheck-core frontend tinyxml2 simplecpp picojson) -if (NOT CMAKE_DISABLE_PRECOMPILE_HEADERS) - target_precompile_headers(cli PRIVATE precompiled.h) -endif() + add_library(cli_objs OBJECT ${hdrs} ${srcs}) + target_include_directories(cli_objs PRIVATE ${PROJECT_SOURCE_DIR}/lib/ ${PROJECT_SOURCE_DIR}/frontend/) + if(USE_BUNDLED_TINYXML2) + target_externals_include_directories(cli_objs PRIVATE ${PROJECT_SOURCE_DIR}/externals/tinyxml2/) + else() + target_include_directories(cli_objs SYSTEM PRIVATE ${tinyxml2_INCLUDE_DIRS}) + endif() + target_externals_include_directories(cli_objs PRIVATE ${PROJECT_SOURCE_DIR}/externals/picojson/) + target_externals_include_directories(cli_objs PRIVATE ${PROJECT_SOURCE_DIR}/externals/simplecpp/) + if (NOT CMAKE_DISABLE_PRECOMPILE_HEADERS) + target_precompile_headers(cli_objs PRIVATE precompiled.h) + endif() + if (BUILD_CORE_DLL) + target_compile_definitions(cli_objs PRIVATE CPPCHECKLIB_IMPORT TINYXML2_IMPORT) + endif() -if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 13) - # false positive warning in Clang 13 - caused by FD_ZERO macro - set_source_files_properties(processexecutor.cpp PROPERTIES COMPILE_FLAGS -Wno-reserved-identifier) -endif() + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 13) + # false positive warning in Clang 13 - caused by FD_ZERO macro + set_source_files_properties(processexecutor.cpp PROPERTIES COMPILE_FLAGS -Wno-reserved-identifier) + endif() -if (BUILD_CLI) - list(APPEND cppcheck_SOURCES ${hdrs} ${mainfile}) + list(APPEND cppcheck_SOURCES ${hdrs} ${mainfile} $ $) + if (NOT BUILD_CORE_DLL) + list(APPEND cppcheck_SOURCES $) + list(APPEND cppcheck_SOURCES $) + if(USE_BUNDLED_TINYXML2) + list(APPEND cppcheck_SOURCES $) + endif() + endif() if (WIN32) list(APPEND cppcheck_SOURCES version.rc) endif() add_executable(cppcheck ${cppcheck_SOURCES}) - target_link_libraries(cppcheck cppcheck-core cli tinyxml2 simplecpp) + target_include_directories(cppcheck PRIVATE ${PROJECT_SOURCE_DIR}/lib/) + if(USE_BUNDLED_TINYXML2) + target_externals_include_directories(cppcheck PRIVATE ${PROJECT_SOURCE_DIR}/externals/tinyxml2/) + else() + target_include_directories(cppcheck SYSTEM PRIVATE ${tinyxml2_INCLUDE_DIRS}) + endif() + target_externals_include_directories(cppcheck PRIVATE ${PROJECT_SOURCE_DIR}/externals/simplecpp/) + if (HAVE_RULES) + target_link_libraries(cppcheck ${PCRE_LIBRARY}) + endif() if (WIN32 AND NOT BORLAND) if(NOT MINGW) target_link_libraries(cppcheck Shlwapi.lib) @@ -31,7 +56,13 @@ if (BUILD_CLI) target_link_libraries(cppcheck shlwapi) endif() endif() + if(tinyxml2_FOUND AND NOT USE_BUNDLED_TINYXML2) + target_link_libraries(cppcheck ${tinyxml2_LIBRARIES}) + endif() target_link_libraries(cppcheck ${CMAKE_THREAD_LIBS_INIT}) + if (BUILD_CORE_DLL) + target_link_libraries(cppcheck cppcheck-core) + endif() add_dependencies(cppcheck copy_cfg) add_dependencies(cppcheck copy_addons) diff --git a/cmake/compileroptions.cmake b/cmake/compileroptions.cmake index 4112ddd2418..91fb5ca9435 100644 --- a/cmake/compileroptions.cmake +++ b/cmake/compileroptions.cmake @@ -24,28 +24,6 @@ function(target_externals_include_directories TARGET) endif() endfunction() -function(target_dll_compile_definitions TARGET) - set(options) - set(oneValueArgs IMPORT EXPORT) - set(multiValueArgs) - - cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - if(PARSE_UNPARSED_ARGUMENTS) - message( - FATAL_ERROR "Unknown keywords given to target_dll_compile_definitions(): \"${PARSE_UNPARSED_ARGUMENTS}\"") - endif() - - - if (BUILD_SHARED_LIBS AND MSVC) - if(PARSE_EXPORT) - target_compile_definitions(${TARGET} PRIVATE ${PARSE_EXPORT}) - endif() - if(PARSE_IMPORT) - target_compile_definitions(${TARGET} INTERFACE ${PARSE_IMPORT}) - endif() - endif() -endfunction() - if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Weverything) endif() diff --git a/cmake/findDependencies.cmake b/cmake/findDependencies.cmake index 3fffa420a5e..fb59a289aac 100644 --- a/cmake/findDependencies.cmake +++ b/cmake/findDependencies.cmake @@ -61,10 +61,10 @@ else() endif() if(NOT USE_BUNDLED_TINYXML2) - add_library(tinyxml2 INTERFACE) find_package(tinyxml2 QUIET) if(TARGET tinyxml2::tinyxml2) - target_link_libraries(tinyxml2 INTERFACE tinyxml2::tinyxml2) + set(tinyxml2_LIBRARIES "tinyxml2::tinyxml2") + set(tinyxml2_INCLUDE_DIRS $) else() find_library(tinyxml2_LIBRARIES tinyxml2) find_path(tinyxml2_INCLUDE_DIRS tinyxml2.h) @@ -73,8 +73,6 @@ if(NOT USE_BUNDLED_TINYXML2) else() set(tinyxml2_FOUND 1) endif() - target_link_libraries(tinyxml2 INTERFACE ${tinyxml2_LIBRARIES}) - target_include_directories(tinyxml2 INTERFACE ${tinyxml2_INCLUDE_DIRS}) endif() endif() diff --git a/externals/picojson/CMakeLists.txt b/externals/picojson/CMakeLists.txt deleted file mode 100644 index 937a89c12b3..00000000000 --- a/externals/picojson/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ - -add_library(picojson INTERFACE) -target_externals_include_directories(picojson INTERFACE .) - diff --git a/externals/simplecpp/CMakeLists.txt b/externals/simplecpp/CMakeLists.txt index 50f139739a7..18430fea55e 100644 --- a/externals/simplecpp/CMakeLists.txt +++ b/externals/simplecpp/CMakeLists.txt @@ -1,11 +1,11 @@ file(GLOB hdrs "*.h") file(GLOB srcs "*.cpp") -add_library(simplecpp ${srcs} ${hdrs}) -target_dll_compile_definitions(simplecpp EXPORT SIMPLECPP_EXPORT IMPORT SIMPLECPP_IMPORT) +add_library(simplecpp_objs OBJECT ${srcs} ${hdrs}) +if (BUILD_CORE_DLL) + target_compile_definitions(simplecpp_objs PRIVATE SIMPLECPP_EXPORT) +endif() if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - target_compile_options_safe(simplecpp -Wno-zero-as-null-pointer-constant) + target_compile_options_safe(simplecpp_objs -Wno-zero-as-null-pointer-constant) endif() - -target_externals_include_directories(simplecpp PUBLIC .) diff --git a/externals/tinyxml2/CMakeLists.txt b/externals/tinyxml2/CMakeLists.txt index 9f15c558682..f1e7adaa01a 100644 --- a/externals/tinyxml2/CMakeLists.txt +++ b/externals/tinyxml2/CMakeLists.txt @@ -1,24 +1,24 @@ file(GLOB hdrs "*.h") file(GLOB srcs "*.cpp") -add_library(tinyxml2 ${srcs} ${hdrs}) -target_dll_compile_definitions(tinyxml2 EXPORT TINYXML2_EXPORT IMPORT TINYXML2_IMPORT) +add_library(tinyxml2_objs OBJECT ${srcs} ${hdrs}) +if (BUILD_CORE_DLL) + target_compile_definitions(tinyxml2_objs PRIVATE TINYXML2_EXPORT) +endif() # TODO: needs to be fixed upstream if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_options(tinyxml2 PRIVATE -Wno-suggest-attribute=format) - target_compile_options(tinyxml2 PRIVATE -Wno-useless-cast) + target_compile_options(tinyxml2_objs PRIVATE -Wno-suggest-attribute=format) + target_compile_options(tinyxml2_objs PRIVATE -Wno-useless-cast) endif() if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - target_compile_options_safe(tinyxml2 -Wno-implicit-fallthrough) - target_compile_options_safe(tinyxml2 -Wno-suggest-destructor-override) - target_compile_options_safe(tinyxml2 -Wno-zero-as-null-pointer-constant) - target_compile_options_safe(tinyxml2 -Wno-format-nonliteral) - target_compile_options_safe(tinyxml2 -Wno-inconsistent-missing-destructor-override) + target_compile_options_safe(tinyxml2_objs -Wno-implicit-fallthrough) + target_compile_options_safe(tinyxml2_objs -Wno-suggest-destructor-override) + target_compile_options_safe(tinyxml2_objs -Wno-zero-as-null-pointer-constant) + target_compile_options_safe(tinyxml2_objs -Wno-format-nonliteral) + target_compile_options_safe(tinyxml2_objs -Wno-inconsistent-missing-destructor-override) endif() if(CYGWIN) target_compile_definitions(-D_LARGEFILE_SOURCE) # required for fseeko() and ftello() endif() -target_externals_include_directories(tinyxml2 PUBLIC .) - diff --git a/frontend/CMakeLists.txt b/frontend/CMakeLists.txt index 17d10bb4f00..e5e64bfe85b 100644 --- a/frontend/CMakeLists.txt +++ b/frontend/CMakeLists.txt @@ -1,6 +1,5 @@ file(GLOB hdrs "*.h") file(GLOB srcs "*.cpp") -add_library(frontend ${hdrs} ${srcs}) -target_include_directories(frontend PUBLIC .) -target_link_libraries(frontend PRIVATE cppcheck-core) +add_library(frontend_objs OBJECT ${hdrs} ${srcs}) +target_include_directories(frontend_objs PRIVATE ${PROJECT_SOURCE_DIR}/lib) \ No newline at end of file diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index ff329ad1163..6f4e9420bd8 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -20,26 +20,44 @@ CheckOptions: list(APPEND cppcheck-gui-deps ${hdrs} ${uis_hdrs} ${resources} ${qms}) add_custom_target(gui-build-deps SOURCES ${cppcheck-gui-deps}) - list(APPEND cppcheck-gui_SOURCES ${srcs}) + list(APPEND cppcheck-gui_SOURCES ${srcs} $) + if (NOT BUILD_CORE_DLL) + list(APPEND cppcheck-gui_SOURCES $ $) + if(USE_BUNDLED_TINYXML2) + list(APPEND cppcheck-gui_SOURCES $) + endif() + endif() if (WIN32) list(APPEND cppcheck-gui_SOURCES cppcheck-gui.rc) endif() add_executable(cppcheck-gui ${cppcheck-gui-deps} ${cppcheck-gui_SOURCES}) - target_link_libraries(cppcheck-gui cppcheck-core simplecpp tinyxml2 picojson frontend) - set_target_properties(cppcheck-gui PROPERTIES AUTOMOC ON) set_target_properties(cppcheck-gui PROPERTIES WIN32_EXECUTABLE ON) + target_include_directories(cppcheck-gui PRIVATE ${PROJECT_SOURCE_DIR}/lib/ ${PROJECT_SOURCE_DIR}/frontend/) + if(USE_BUNDLED_TINYXML2) + target_externals_include_directories(cppcheck-gui PRIVATE ${PROJECT_SOURCE_DIR}/externals/tinyxml2/) + else() + target_include_directories(cppcheck-gui SYSTEM PRIVATE ${tinyxml2_INCLUDE_DIRS}) + endif() + target_include_directories(cppcheck-gui PRIVATE ${PROJECT_SOURCE_DIR}/externals/picojson/) if (NOT CMAKE_DISABLE_PRECOMPILE_HEADERS) target_precompile_headers(cppcheck-gui PRIVATE precompiled.h) endif() if (HAVE_RULES) target_link_libraries(cppcheck-gui ${PCRE_LIBRARY}) endif() + if(tinyxml2_FOUND AND NOT USE_BUNDLED_TINYXML2) + target_link_libraries(cppcheck-gui ${tinyxml2_LIBRARIES}) + endif() target_link_libraries(cppcheck-gui ${QT_CORE_LIB} ${QT_GUI_LIB} ${QT_WIDGETS_LIB} ${QT_PRINTSUPPORT_LIB} ${QT_HELP_LIB} ${QT_NETWORK_LIB}) if(WITH_QCHART) target_link_libraries(cppcheck-gui ${QT_CHARTS_LIB}) endif() + if (BUILD_CORE_DLL) + target_compile_definitions(cppcheck-gui PRIVATE CPPCHECKLIB_IMPORT TINYXML2_IMPORT) + target_link_libraries(cppcheck-gui cppcheck-core) + endif() if(MSVC) # compilation will fail as e.g. QList::realloc would be replaced by MSVC's macro definition target_compile_definitions(cppcheck-gui PRIVATE $<$:DISABLE_CRTDBG_MAP_ALLOC>) diff --git a/gui/test/filelist/CMakeLists.txt b/gui/test/filelist/CMakeLists.txt index 4af40a1c876..9ffef5da4f9 100644 --- a/gui/test/filelist/CMakeLists.txt +++ b/gui/test/filelist/CMakeLists.txt @@ -5,10 +5,15 @@ add_executable(test-filelist ${test-filelist_SRC} testfilelist.cpp ${CMAKE_SOURCE_DIR}/gui/filelist.cpp + ${CMAKE_SOURCE_DIR}/lib/pathmatch.cpp + ${CMAKE_SOURCE_DIR}/lib/path.cpp + ${CMAKE_SOURCE_DIR}/lib/utils.cpp + $ ) -target_include_directories(test-filelist PRIVATE ${CMAKE_SOURCE_DIR}/gui) +target_include_directories(test-filelist PRIVATE ${CMAKE_SOURCE_DIR}/gui ${CMAKE_SOURCE_DIR}/lib) +target_externals_include_directories(test-filelist PRIVATE ${CMAKE_SOURCE_DIR}/externals/simplecpp) target_compile_definitions(test-filelist PRIVATE SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}") -target_link_libraries(test-filelist ${QT_CORE_LIB} ${QT_TEST_LIB} cppcheck-core simplecpp) +target_link_libraries(test-filelist ${QT_CORE_LIB} ${QT_TEST_LIB}) if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(QT_VERSION VERSION_GREATER_EQUAL "6.9.0") @@ -21,4 +26,4 @@ if (REGISTER_GUI_TESTS) add_test(NAME test-filelist COMMAND $) endif() -add_dependencies(gui-tests test-filelist) +add_dependencies(gui-tests test-filelist) \ No newline at end of file diff --git a/gui/test/resultstree/CMakeLists.txt b/gui/test/resultstree/CMakeLists.txt index 1bf8a02ffb1..f796ae2c722 100644 --- a/gui/test/resultstree/CMakeLists.txt +++ b/gui/test/resultstree/CMakeLists.txt @@ -7,6 +7,10 @@ qt_wrap_cpp(test-resultstree_SRC ${CMAKE_SOURCE_DIR}/gui/threadhandler.h ${CMAKE_SOURCE_DIR}/gui/threadresult.h ) +if(USE_BUNDLED_TINYXML2) + list(APPEND test-resultstree_SRC $) +endif() +list(APPEND test-resultstree_SRC $ $) add_custom_target(build-resultstree-deps SOURCES ${test-resultstree_SRC}) add_dependencies(gui-build-deps build-resultstree-deps) add_executable(test-resultstree @@ -19,14 +23,22 @@ add_executable(test-resultstree ${CMAKE_SOURCE_DIR}/gui/report.cpp ${CMAKE_SOURCE_DIR}/gui/xmlreportv2.cpp ) -target_include_directories(test-resultstree PRIVATE ${CMAKE_SOURCE_DIR}/gui) -target_link_libraries(test-resultstree cppcheck-core simplecpp tinyxml2) +target_include_directories(test-resultstree PRIVATE ${CMAKE_SOURCE_DIR}/gui ${CMAKE_SOURCE_DIR}/lib) +target_externals_include_directories(test-resultstree PRIVATE ${CMAKE_SOURCE_DIR}/externals/simplecpp) +if(USE_BUNDLED_TINYXML2) + target_externals_include_directories(test-resultstree PRIVATE ${PROJECT_SOURCE_DIR}/externals/tinyxml2/) +else() + target_include_directories(test-resultstree SYSTEM PRIVATE ${tinyxml2_INCLUDE_DIRS}) +endif() if (HAVE_RULES) target_link_libraries(test-resultstree ${PCRE_LIBRARY}) target_include_directories(test-resultstree SYSTEM PRIVATE ${PCRE_INCLUDE}) endif() target_compile_definitions(test-resultstree PRIVATE SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}") target_link_libraries(test-resultstree ${QT_CORE_LIB} ${QT_GUI_LIB} ${QT_WIDGETS_LIB} ${QT_TEST_LIB}) +if(tinyxml2_FOUND AND NOT USE_BUNDLED_TINYXML2) + target_link_libraries(test-resultstree ${tinyxml2_LIBRARIES}) +endif() if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(QT_VERSION VERSION_GREATER_EQUAL "6.9.0") @@ -42,11 +54,6 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") target_compile_options_safe(test-resultstree -Wno-suggest-attribute=noreturn) endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - # caused by mocks - target_compile_options_safe(test-resultstree -Wno-suggest-attribute=noreturn) -endif() - if (REGISTER_GUI_TESTS) # TODO: might crash - see #13223 #add_test(NAME test-resultstree COMMAND $ -platform offscreen) diff --git a/gui/test/xmlreportv2/CMakeLists.txt b/gui/test/xmlreportv2/CMakeLists.txt index fde9da7d0db..7725615d1f7 100644 --- a/gui/test/xmlreportv2/CMakeLists.txt +++ b/gui/test/xmlreportv2/CMakeLists.txt @@ -1,6 +1,12 @@ qt_wrap_cpp(test-xmlreportv2_SRC testxmlreportv2.h) add_custom_target(build-xmlreportv2-deps SOURCES ${test-xmlreportv2_SRC}) add_dependencies(gui-build-deps build-xmlreportv2-deps) +if (NOT BUILD_CORE_DLL) + list(APPEND test-xmlreportv2_SRC $ $) + if(USE_BUNDLED_TINYXML2) + list(APPEND test-xmlreportv2_SRC $) + endif() +endif() add_executable(test-xmlreportv2 ${test-xmlreportv2_SRC} testxmlreportv2.cpp @@ -9,9 +15,19 @@ add_executable(test-xmlreportv2 ${CMAKE_SOURCE_DIR}/gui/xmlreport.cpp ${CMAKE_SOURCE_DIR}/gui/xmlreportv2.cpp ) -target_include_directories(test-xmlreportv2 PRIVATE ${CMAKE_SOURCE_DIR}/gui) +target_include_directories(test-xmlreportv2 PRIVATE ${CMAKE_SOURCE_DIR}/gui ${CMAKE_SOURCE_DIR}/lib) target_compile_definitions(test-xmlreportv2 PRIVATE SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}") -target_link_libraries(test-xmlreportv2 ${QT_CORE_LIB} ${QT_TEST_LIB} cppcheck-core) +target_link_libraries(test-xmlreportv2 ${QT_CORE_LIB} ${QT_TEST_LIB}) +if (HAVE_RULES) + target_link_libraries(test-xmlreportv2 ${PCRE_LIBRARY}) +endif() +if(tinyxml2_FOUND AND NOT USE_BUNDLED_TINYXML2) + target_link_libraries(test-xmlreportv2 ${tinyxml2_LIBRARIES}) +endif() +if (BUILD_CORE_DLL) + target_compile_definitions(test-xmlreportv2 PRIVATE CPPCHECKLIB_IMPORT TINYXML2_IMPORT) + target_link_libraries(test-xmlreportv2 cppcheck-core) +endif() if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(QT_VERSION VERSION_GREATER_EQUAL "6.9.0") # caused by Qt generated moc code starting with 6.9.0 - see https://bugreports.qt.io/browse/QTBUG-135638 diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index d7a94de352e..7a884164761 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -37,26 +37,25 @@ else() set(srcs_lib ${srcs}) endif() -if(BUILD_SHARED_LIBS) - add_library(cppcheck-core ${srcs_lib} ${hdrs}) +if (BUILD_CORE_DLL) + add_library(cppcheck-core SHARED ${srcs_lib} ${hdrs} $ $ version.rc) + target_compile_definitions(cppcheck-core PRIVATE CPPCHECKLIB_EXPORT TINYXML2_EXPORT SIMPLECPP_EXPORT) else() - # A OBJECT library is used because the auto-registration doesn't work with static libraries add_library(cppcheck-core OBJECT ${srcs_lib} ${hdrs}) endif() -if (BUILD_SHARED_LIBS AND MSVC) - target_sources(cppcheck-core PRIVATE version.rc) +target_externals_include_directories(cppcheck-core PRIVATE ${PROJECT_SOURCE_DIR}/externals/) +if(USE_BUNDLED_TINYXML2) + target_externals_include_directories(cppcheck-core PRIVATE ${PROJECT_SOURCE_DIR}/externals/tinyxml2/) +else() + target_include_directories(cppcheck-core SYSTEM PRIVATE ${tinyxml2_INCLUDE_DIRS}) endif() - -target_dll_compile_definitions(cppcheck-core EXPORT CPPCHECKLIB_EXPORT IMPORT CPPCHECKLIB_IMPORT) - -target_include_directories(cppcheck-core PUBLIC .) -target_link_libraries(cppcheck-core PRIVATE tinyxml2 simplecpp picojson ${PCRE_LIBRARY}) - +target_externals_include_directories(cppcheck-core PRIVATE ${PROJECT_SOURCE_DIR}/externals/picojson/) +target_externals_include_directories(cppcheck-core PRIVATE ${PROJECT_SOURCE_DIR}/externals/simplecpp/) if (HAVE_RULES) target_include_directories(cppcheck-core SYSTEM PRIVATE ${PCRE_INCLUDE}) endif() if (Boost_FOUND) - target_include_directories(cppcheck-core SYSTEM PUBLIC ${Boost_INCLUDE_DIRS}) + target_include_directories(cppcheck-core SYSTEM PRIVATE ${Boost_INCLUDE_DIRS}) endif() if (NOT CMAKE_DISABLE_PRECOMPILE_HEADERS) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index dca02d19194..8044af1c249 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -4,10 +4,29 @@ if (BUILD_TESTS) file(GLOB hdrs "*.h") file(GLOB srcs "*.cpp") - list(APPEND testrunner_SOURCES ${hdrs} ${srcs}) + list(APPEND testrunner_SOURCES ${hdrs} ${srcs} $ $) + if (NOT BUILD_CORE_DLL) + list(APPEND testrunner_SOURCES $ $) + if(USE_BUNDLED_TINYXML2) + list(APPEND testrunner_SOURCES $) + endif() + endif() add_executable(testrunner ${testrunner_SOURCES}) - target_link_libraries(testrunner cppcheck-core tinyxml2 picojson simplecpp frontend cli) + target_include_directories(testrunner PRIVATE ${PROJECT_SOURCE_DIR}/lib/ ${PROJECT_SOURCE_DIR}/cli/ ${PROJECT_SOURCE_DIR}/frontend/) + if(USE_BUNDLED_TINYXML2) + target_externals_include_directories(testrunner PRIVATE ${PROJECT_SOURCE_DIR}/externals/tinyxml2) + else() + target_include_directories(testrunner SYSTEM PRIVATE ${tinyxml2_INCLUDE_DIRS}) + endif() + target_externals_include_directories(testrunner PRIVATE ${PROJECT_SOURCE_DIR}/externals/simplecpp/) + target_externals_include_directories(testrunner PRIVATE ${PROJECT_SOURCE_DIR}/externals/picojson/) + if (Boost_FOUND) + target_include_directories(testrunner SYSTEM PRIVATE ${Boost_INCLUDE_DIRS}) + endif() + if (HAVE_RULES) + target_link_libraries(testrunner ${PCRE_LIBRARY}) + endif() if (WIN32 AND NOT BORLAND) if(NOT MINGW) target_link_libraries(testrunner Shlwapi.lib) @@ -15,7 +34,14 @@ if (BUILD_TESTS) target_link_libraries(testrunner shlwapi) endif() endif() + if(tinyxml2_FOUND AND NOT USE_BUNDLED_TINYXML2) + target_link_libraries(testrunner ${tinyxml2_LIBRARIES}) + endif() target_link_libraries(testrunner ${CMAKE_THREAD_LIBS_INIT}) + if (BUILD_CORE_DLL) + target_compile_definitions(testrunner PRIVATE CPPCHECKLIB_IMPORT SIMPLECPP_IMPORT) + target_link_libraries(testrunner cppcheck-core) + endif() if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") # (void) in ASSERT_THROW* macros might trigger this target_compile_options_safe(testrunner -Wno-useless-cast) diff --git a/tools/dmake/CMakeLists.txt b/tools/dmake/CMakeLists.txt index cbe7040ef2f..5af693eb179 100644 --- a/tools/dmake/CMakeLists.txt +++ b/tools/dmake/CMakeLists.txt @@ -1,8 +1,23 @@ +# TODO: when using ccache and matchcompiler this will accessed before the file was generated and thus the build fails +set(srcs_lib pathmatch.cpp path.cpp utils.cpp) +foreach(file ${srcs_lib}) + if (NOT USE_MATCHCOMPILER_OPT STREQUAL "Off") + set(src "${CMAKE_BINARY_DIR}/lib/build/mc_${file}") + set_source_files_properties(${src} PROPERTIES GENERATED TRUE) + else() + set(src "${CMAKE_SOURCE_DIR}/lib/${file}") + endif() + set(srcs_tools ${srcs_tools} ${src}) +endforeach() add_executable(dmake EXCLUDE_FROM_ALL dmake.cpp + ${CMAKE_SOURCE_DIR}/cli/filelister.cpp + ${srcs_tools} + $ ) -target_link_libraries(dmake cppcheck-core cli simplecpp) +target_include_directories(dmake PRIVATE ${CMAKE_SOURCE_DIR}/cli ${CMAKE_SOURCE_DIR}/lib) +target_externals_include_directories(dmake PRIVATE ${CMAKE_SOURCE_DIR}/externals/simplecpp) if (WIN32 AND NOT BORLAND) if(NOT MINGW) target_link_libraries(dmake Shlwapi.lib)