XCode generator doesn't create binary for the FRAMEWORK target with no "own" files
If FRAMEWORK library doesn't have own files, but only references other targets, then XCode generator doesn't create a binary file for it.
Here is minimal reproducer:
cmake_minimum_required(VERSION 3.23)
project(demo LANGUAGES CXX)
file(WRITE d1.cpp "int f() { return 0; }")
add_library(d1 OBJECT d1.cpp)
file(TOUCH dummy.cpp)
add_library(demo SHARED $<TARGET_OBJECTS:d1>
#uncomment bellow to make it work
#dummy.cpp
)
set_target_properties(demo PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_VERSION A
)
Compile and check
$ cmake -GXcode -B b -S .
-- The CXX compiler identification is AppleClang 13.1.6.13160021
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/yamlcoder/nobundle/b
$ cmake --build b
...
$ file b/Debug/demo.framework/demo
b/Debug/demo.framework/demo: cannot open `b/Debug/demo.framework/demo' (No such file or directory)
Adding empty file to target itself makes it work:
$ file b/Debug/demo.framework/demo
b/Debug/demo.framework/demo: Mach-O 64-bit dynamically linked shared library arm64