I have a custom target for emit module interface. How can I link custom target with libraries?
function(add_module TARGET)
set_source_files_properties(${ARGN} PROPERTIES LANGUAGE CXX)
add_custom_target(${TARGET}.pcm
COMMAND
${CMAKE_CXX_COMPILER}
-std=c++20
-fmodules
-fimplicit-modules
-fbuiltin-module-map
-fimplicit-module-maps
-c "${CMAKE_CURRENT_SOURCE_DIR}/${ARGN}"
-Xclang -emit-module-interface
-o "${PREBUILT_MODULE_PATH}/${TARGET}.pcm"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
add_library(${TARGET} ${ARGN})
add_dependencies(${TARGET} ${TARGET}.pcm)
endfunction()
add_module(raytrace src/raytrace.cpp)
target_link_libraries(raytrace stl) // not working
target_link_libraries(raytrace.pcm stl) // (1)
(1) produces
CMake Error at CMakeLists.txt:75 (target_link_libraries):
Utility target "raytrace.pcm" must not be used as the target of a
target_link_libraries call.
stl is interface library added via add_subdirectory(stl)