# CMake Error: OBJECT library target "myobjlib" may not be used in target_link_libraries with keyword "PUBLIC" or "INTERFACE".

- **ID:** `cmake/object-library-link-error`
- **Domain:** cmake
- **Category:** build_error
- **Verification:** ai_generated
- **Fix Rate:** 95%

## Root Cause

OBJECT libraries in CMake are only allowed in PRIVATE scope of target_link_libraries; using PUBLIC or INTERFACE violates the object library's non-exportable nature.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| CMake 3.20 | active | — | — |
| CMake 3.21 | active | — | — |
| CMake 3.22 | active | — | — |

## Workarounds

1. **add_library(myobjlib OBJECT src1.cpp src2.cpp)
add_library(mylib STATIC)
target_link_libraries(mylib PRIVATE myobjlib)  # Correct** (95% success)
   ```
   add_library(myobjlib OBJECT src1.cpp src2.cpp)
add_library(mylib STATIC)
target_link_libraries(mylib PRIVATE myobjlib)  # Correct
   ```
2. **add_library(myobjlib STATIC src1.cpp src2.cpp)  # Change to STATIC
target_link_libraries(mylib PUBLIC myobjlib)** (80% success)
   ```
   add_library(myobjlib STATIC src1.cpp src2.cpp)  # Change to STATIC
target_link_libraries(mylib PUBLIC myobjlib)
   ```

## Dead Ends

- **** — This changes the build semantics and may break object-like usage (e.g., no separate compilation units). (70% fail)
- **** — CMake explicitly rejects PUBLIC/INTERFACE for OBJECT libraries; it will always error. (100% fail)
