diff --git a/CMakeLists.txt b/CMakeLists.txt index 91f4ee23119..3595154f7ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,6 +109,7 @@ 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 8ea47196350..2664a29a65d 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -1,54 +1,29 @@ -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_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() +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() - 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() - 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 (BUILD_CLI) + list(APPEND cppcheck_SOURCES ${hdrs} ${mainfile}) if (WIN32) list(APPEND cppcheck_SOURCES version.rc) endif() add_executable(cppcheck ${cppcheck_SOURCES}) - 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() + target_link_libraries(cppcheck cppcheck-core cli tinyxml2 simplecpp) if (WIN32 AND NOT BORLAND) if(NOT MINGW) target_link_libraries(cppcheck Shlwapi.lib) @@ -56,13 +31,7 @@ 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 91fb5ca9435..4112ddd2418 100644 --- a/cmake/compileroptions.cmake +++ b/cmake/compileroptions.cmake @@ -24,6 +24,28 @@ 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 fb59a289aac..3fffa420a5e 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) - set(tinyxml2_LIBRARIES "tinyxml2::tinyxml2") - set(tinyxml2_INCLUDE_DIRS $) + target_link_libraries(tinyxml2 INTERFACE tinyxml2::tinyxml2) else() find_library(tinyxml2_LIBRARIES tinyxml2) find_path(tinyxml2_INCLUDE_DIRS tinyxml2.h) @@ -73,6 +73,8 @@ 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 new file mode 100644 index 00000000000..937a89c12b3 --- /dev/null +++ b/externals/picojson/CMakeLists.txt @@ -0,0 +1,4 @@ + +add_library(picojson INTERFACE) +target_externals_include_directories(picojson INTERFACE .) + diff --git a/externals/simplecpp/CMakeLists.txt b/externals/simplecpp/CMakeLists.txt index 18430fea55e..50f139739a7 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_objs OBJECT ${srcs} ${hdrs}) -if (BUILD_CORE_DLL) - target_compile_definitions(simplecpp_objs PRIVATE SIMPLECPP_EXPORT) -endif() +add_library(simplecpp ${srcs} ${hdrs}) +target_dll_compile_definitions(simplecpp EXPORT SIMPLECPP_EXPORT IMPORT SIMPLECPP_IMPORT) if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - target_compile_options_safe(simplecpp_objs -Wno-zero-as-null-pointer-constant) + target_compile_options_safe(simplecpp -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 f1e7adaa01a..9f15c558682 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_objs OBJECT ${srcs} ${hdrs}) -if (BUILD_CORE_DLL) - target_compile_definitions(tinyxml2_objs PRIVATE TINYXML2_EXPORT) -endif() +add_library(tinyxml2 ${srcs} ${hdrs}) +target_dll_compile_definitions(tinyxml2 EXPORT TINYXML2_EXPORT IMPORT TINYXML2_IMPORT) # TODO: needs to be fixed upstream if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_options(tinyxml2_objs PRIVATE -Wno-suggest-attribute=format) - target_compile_options(tinyxml2_objs PRIVATE -Wno-useless-cast) + target_compile_options(tinyxml2 PRIVATE -Wno-suggest-attribute=format) + target_compile_options(tinyxml2 PRIVATE -Wno-useless-cast) endif() if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - 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) + 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) 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 e5e64bfe85b..17d10bb4f00 100644 --- a/frontend/CMakeLists.txt +++ b/frontend/CMakeLists.txt @@ -1,5 +1,6 @@ file(GLOB hdrs "*.h") file(GLOB srcs "*.cpp") -add_library(frontend_objs OBJECT ${hdrs} ${srcs}) -target_include_directories(frontend_objs PRIVATE ${PROJECT_SOURCE_DIR}/lib) \ No newline at end of file +add_library(frontend ${hdrs} ${srcs}) +target_include_directories(frontend PUBLIC .) +target_link_libraries(frontend PRIVATE cppcheck-core) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 6f4e9420bd8..ff329ad1163 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -20,44 +20,26 @@ 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} $) - if (NOT BUILD_CORE_DLL) - list(APPEND cppcheck-gui_SOURCES $ $) - if(USE_BUNDLED_TINYXML2) - list(APPEND cppcheck-gui_SOURCES $) - endif() - endif() + list(APPEND cppcheck-gui_SOURCES ${srcs}) 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 9ffef5da4f9..4af40a1c876 100644 --- a/gui/test/filelist/CMakeLists.txt +++ b/gui/test/filelist/CMakeLists.txt @@ -5,15 +5,10 @@ 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 ${CMAKE_SOURCE_DIR}/lib) -target_externals_include_directories(test-filelist PRIVATE ${CMAKE_SOURCE_DIR}/externals/simplecpp) +target_include_directories(test-filelist PRIVATE ${CMAKE_SOURCE_DIR}/gui) target_compile_definitions(test-filelist PRIVATE SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}") -target_link_libraries(test-filelist ${QT_CORE_LIB} ${QT_TEST_LIB}) +target_link_libraries(test-filelist ${QT_CORE_LIB} ${QT_TEST_LIB} cppcheck-core simplecpp) if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(QT_VERSION VERSION_GREATER_EQUAL "6.9.0") @@ -26,4 +21,4 @@ if (REGISTER_GUI_TESTS) add_test(NAME test-filelist COMMAND $) endif() -add_dependencies(gui-tests test-filelist) \ No newline at end of file +add_dependencies(gui-tests test-filelist) diff --git a/gui/test/resultstree/CMakeLists.txt b/gui/test/resultstree/CMakeLists.txt index a39809e2ebc..288011c77e0 100644 --- a/gui/test/resultstree/CMakeLists.txt +++ b/gui/test/resultstree/CMakeLists.txt @@ -6,10 +6,6 @@ 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 @@ -21,22 +17,14 @@ 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 ${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() +target_include_directories(test-resultstree PRIVATE ${CMAKE_SOURCE_DIR}/gui) +target_link_libraries(test-resultstree cppcheck-core simplecpp tinyxml2) 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") @@ -52,6 +40,12 @@ 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 7725615d1f7..fde9da7d0db 100644 --- a/gui/test/xmlreportv2/CMakeLists.txt +++ b/gui/test/xmlreportv2/CMakeLists.txt @@ -1,12 +1,6 @@ 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 @@ -15,19 +9,9 @@ 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 ${CMAKE_SOURCE_DIR}/lib) +target_include_directories(test-xmlreportv2 PRIVATE ${CMAKE_SOURCE_DIR}/gui) target_compile_definitions(test-xmlreportv2 PRIVATE SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}") -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() +target_link_libraries(test-xmlreportv2 ${QT_CORE_LIB} ${QT_TEST_LIB} cppcheck-core) 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 7a884164761..d7a94de352e 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -37,25 +37,26 @@ else() set(srcs_lib ${srcs}) endif() -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) +if(BUILD_SHARED_LIBS) + add_library(cppcheck-core ${srcs_lib} ${hdrs}) 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() -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}) +if (BUILD_SHARED_LIBS AND MSVC) + target_sources(cppcheck-core PRIVATE version.rc) endif() -target_externals_include_directories(cppcheck-core PRIVATE ${PROJECT_SOURCE_DIR}/externals/picojson/) -target_externals_include_directories(cppcheck-core PRIVATE ${PROJECT_SOURCE_DIR}/externals/simplecpp/) + +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}) + if (HAVE_RULES) target_include_directories(cppcheck-core SYSTEM PRIVATE ${PCRE_INCLUDE}) endif() if (Boost_FOUND) - target_include_directories(cppcheck-core SYSTEM PRIVATE ${Boost_INCLUDE_DIRS}) + target_include_directories(cppcheck-core SYSTEM PUBLIC ${Boost_INCLUDE_DIRS}) endif() if (NOT CMAKE_DISABLE_PRECOMPILE_HEADERS) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 0bbcea9d8a9..a31ab810dfe 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -4,28 +4,10 @@ if (BUILD_TESTS) file(GLOB hdrs "*.h") file(GLOB srcs "*.cpp") - 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() + list(APPEND testrunner_SOURCES ${hdrs} ${srcs}) add_executable(testrunner ${testrunner_SOURCES}) - 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/) - if (Boost_FOUND) - target_include_directories(testrunner SYSTEM PRIVATE ${Boost_INCLUDE_DIRS}) - endif() - if (HAVE_RULES) - target_link_libraries(testrunner ${PCRE_LIBRARY}) - endif() + target_link_libraries(testrunner cppcheck-core tinyxml2 simplecpp frontend cli) if (WIN32 AND NOT BORLAND) if(NOT MINGW) target_link_libraries(testrunner Shlwapi.lib) @@ -33,14 +15,7 @@ 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 5af693eb179..cbe7040ef2f 100644 --- a/tools/dmake/CMakeLists.txt +++ b/tools/dmake/CMakeLists.txt @@ -1,23 +1,8 @@ -# 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_include_directories(dmake PRIVATE ${CMAKE_SOURCE_DIR}/cli ${CMAKE_SOURCE_DIR}/lib) -target_externals_include_directories(dmake PRIVATE ${CMAKE_SOURCE_DIR}/externals/simplecpp) +target_link_libraries(dmake cppcheck-core cli simplecpp) if (WIN32 AND NOT BORLAND) if(NOT MINGW) target_link_libraries(dmake Shlwapi.lib)