Skip to content

Commit bd5901d

Browse files
committed
fixed #14922 - do not use absolute paths in CMake INSTALL() / added TODOs
1 parent 8e5682d commit bd5901d

6 files changed

Lines changed: 26 additions & 10 deletions

File tree

.github/workflows/CI-unixish.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ jobs:
150150
- name: Run CMake install
151151
run: |
152152
cmake --build cmake.output --target install
153+
# TODO: validate the installed files
153154
154155
- name: Run CMake on ubuntu (no CLI)
155156
if: matrix.os == 'ubuntu-22.04'

.github/workflows/CI-windows.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ defaults:
2121

2222
jobs:
2323

24+
# TODO: use Debug build to speed it up?
2425
build_qt:
2526
strategy:
2627
matrix:
@@ -68,7 +69,10 @@ jobs:
6869

6970
- name: Run CMake install
7071
run: |
72+
rem TODO: this performs a Debug build
73+
rem TODO: the Qt DLLS are not being installed (because of the missing windeployqt?)
7174
cmake --build build --target install
75+
rem TODO: validate the installed files
7276
7377
build_cmake_cxxstd:
7478
strategy:

cli/CMakeLists.txt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,32 @@ if (BUILD_CLI)
4040
endif()
4141

4242
install(TARGETS cppcheck
43-
RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}
43+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
4444
COMPONENT applications)
4545

4646
install(PROGRAMS ${CMAKE_SOURCE_DIR}/htmlreport/cppcheck-htmlreport
47-
DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}
47+
DESTINATION ${CMAKE_INSTALL_BINDIR}
4848
COMPONENT applications)
4949

50+
# TODO: leverage CMAKE_INSTALL_DATAROOTDIR (share)?
51+
5052
install(FILES ${addons_py}
51-
DESTINATION ${FILESDIR_DEF}/addons
53+
DESTINATION ${FILESDIR_INSTALL}/addons
5254
COMPONENT headers)
5355

5456
install(FILES ${addons_json}
55-
DESTINATION ${FILESDIR_DEF}/addons
57+
DESTINATION ${FILESDIR_INSTALL}/addons
5658
COMPONENT headers)
5759

5860
install(FILES ${cfgs}
59-
DESTINATION ${FILESDIR_DEF}/cfg
61+
DESTINATION ${FILESDIR_INSTALL}/cfg
6062
COMPONENT headers)
6163

6264
install(FILES ${platforms}
63-
DESTINATION ${FILESDIR_DEF}/platforms
65+
DESTINATION ${FILESDIR_INSTALL}/platforms
6466
COMPONENT headers)
6567

68+
# TODO: install manpage into CMAKE_INSTALL_MANDIR
69+
# TODO: install documentation into CMAKE_INSTALL_DOCDIR?
70+
6671
endif()

cmake/options.cmake

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,18 +134,22 @@ set(CMAKE_DISABLE_PRECOMPILE_HEADERS Off CACHE BOOL "Disable precompiled headers
134134
# see https://gitlab.kitware.com/cmake/cmake/-/issues/21219
135135
set(CMAKE_PCH_PROLOGUE "")
136136

137+
# TODO: do we need to set these?
137138
set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE ${CMAKE_INSTALL_PREFIX}/include CACHE PATH "Output directory for headers")
138139
set(CMAKE_LIB_DIRS_CONFIGCMAKE ${CMAKE_INSTALL_PREFIX}/lib CACHE PATH "Output directory for libraries")
139140

141+
# TODO: do we need to set these?
140142
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
141143
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
142144
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
143145

144146
string(LENGTH "${FILESDIR}" _filesdir_len)
145147
# override FILESDIR if it is set or empty
148+
# needs to be an absolute path in Cppcheck but a relative one for CMake install
146149
if(FILESDIR OR ${_filesdir_len} EQUAL 0)
147-
# TODO: verify that it is an absolute path?
150+
set(FILESDIR_INSTALL "${FILESDIR}") # TODO: make relative - leverage CMAKE_INSTALL_DATAROOTDIR?
148151
set(FILESDIR_DEF "${FILESDIR}")
149152
else()
150-
set(FILESDIR_DEF ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME} CACHE STRING "Cppcheck files directory")
153+
set(FILESDIR_INSTALL "share/${PROJECT_NAME}")
154+
set(FILESDIR_DEF "${CMAKE_INSTALL_PREFIX}/${FILESDIR_INSTALL}")
151155
endif()

cmake/printInfo.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ message(STATUS "Compiler Version = ${CMAKE_CXX_COMPILER_VERSION}")
88
message(STATUS "Build type = ${CMAKE_BUILD_TYPE}")
99
message(STATUS "CMake C++ Standard = ${CMAKE_CXX_STANDARD}")
1010
message(STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")
11+
message(STATUS "CMAKE_INSTALL_BINDIR = ${CMAKE_INSTALL_BINDIR}")
1112
message(STATUS "CMAKE_DISABLE_PRECOMPILE_HEADERS = ${CMAKE_DISABLE_PRECOMPILE_HEADERS}")
1213
message(STATUS "C++ flags (General) = ${CMAKE_CXX_FLAGS}")
1314
message(STATUS "C++ flags (Release) = ${CMAKE_CXX_FLAGS_RELEASE}")
@@ -109,6 +110,7 @@ message(STATUS)
109110
message(STATUS "USE_LIBCXX = ${USE_LIBCXX}")
110111
message(STATUS)
111112
message(STATUS "FILESDIR = ${FILESDIR}")
113+
message(STATUS "FILESDIR_INSTALL = ${FILESDIR_INSTALL}")
112114
message(STATUS "FILESDIR_DEF = ${FILESDIR_DEF}")
113115
message(STATUS)
114116

gui/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ CheckOptions:
7171
add_dependencies(cppcheck-gui online-help.qhc)
7272
endif()
7373

74-
install(TARGETS cppcheck-gui RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT applications)
75-
install(FILES ${qms} DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT applications)
74+
install(TARGETS cppcheck-gui RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT applications)
75+
install(FILES ${qms} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT applications)
7676

7777
install(FILES cppcheck-gui.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
7878

0 commit comments

Comments
 (0)