When you will try to link target with the directory (that exists), cmake will
skip this without an error, only the following warning will be reported:
target_link_libraries(main /tmp)
WARNING: Target "main" requests linking to directory "/tmp". Targets may link only to libraries. CMake is dropping the item.
And there is no cmake policy that controls this.
(I guess the reason that it is allowed is because of FRAMEWORK for OSX).
So to avoid error-prone cmake rules, this can be sanitized.
There are the following ways:
- overwrite target_link_libraries()/link_libraries() and check *before*
calling real macro, but this requires duplicate all supported syntax
-- too complex
- overwrite target_link_libraries() and check LINK_LIBRARIES property, this
works great
-- but cannot be used with link_libraries()
- use BUILDSYSTEM_TARGETS property to get list of all targets and sanitize
-- this will work.
I also tested it with the following patch:
$ git di
diff --git a/base/daemon/CMakeLists.txt b/base/daemon/CMakeLists.txt
index 26d59a57e7..35e6ff6432 100644
--- a/base/daemon/CMakeLists.txt
+++ b/base/daemon/CMakeLists.txt
@@ -9,4 +9,5 @@ target_link_libraries (daemon PUBLIC loggers PRIVATE clickhouse_common_io clickh
if (USE_SENTRY)
target_link_libraries (daemon PRIVATE ${SENTRY_LIBRARY})
+ target_link_libraries (daemon PRIVATE /tmp)
endif ()
And it works:
CMake Error at cmake/sanitize_target_link_libraries.cmake:48 (message):
daemon requested to link with directory: /tmp
Call Stack (most recent call first):
cmake/sanitize_target_link_libraries.cmake:55 (sanitize_link_libraries)
CMakeLists.txt:425 (include)
Refs: #12041
* master: (204 commits)
DOCS-289: randConstant (#10838)
Update performance_comparison.md
fix docs build
Adjust ld+json images, remove feather icons (#10843)
[docs] faster local/debug build (#10840)
CLICKHOUSE-4862: some markdown fixes @ ru mergetree.md (#10835)
CLICKHOUSE-4862: fix link (#10836)
Some fixes at ru merge-tree-settings.md (#10837)
Fix MSan failure in cache dictionary
Fix double whitespace
Additional assert in ColumnVector
Fix paths in compiler error messages #10434
Fix "Arcadia" build
Fix style check in Block::sortColumns() (sigh)
Sort iterators to avoid extra std::string creation in Block::sortColumns()
Optimize Block::sortColumns()
Better DNS exception message
Fix logical error in convertFieldToType
Make order of columns strict in Block::sortColumns()
Add a test for INSERT into Buffer() with different order of columns (via MV)
...