Exactly the title. My library depends on a JSON file, and because I would not like to require the end user to have a copy, I have a generator that converts it to an array.
In my CMake file, I wrote a function that takes a resource file and generates a build step and filenames for the resulting generated files (line 2 of the snippet below). It has no problem generating the Makefiles, but when I go to run it, Make tells me that the header is not present. Why is this?
This is the CMake list file in question:
# Resource generator
function(pancake_rsrc_gen var_outputs src_name)
  set(abs_path "${CMAKE_CURRENT_SOURCE_DIR}/${src_name}")
  set(file_name)
  get_filename_component(file_name ${src_name} NAME)
  set(gen_src "${CMAKE_CURRENT_BINARY_DIR}/pancake_rsrc_${file_name}.cpp")
  set(gen_inc "${CMAKE_CURRENT_BINARY_DIR}/pancake_rsrc_${file_name}.hpp")
  
  set(${var_outputs} ${${var_outputs}} ${gen_src} ${gen_inc} PARENT_SCOPE)
  message(STATUS "Generated filename is: ${gen_src}")
  add_custom_command(
    OUTPUT ${gen_src} ${gen_inc}
    MAIN_DEPENDENCY ${abs_path}
    COMMAND python3 "${PROJECT_SOURCE_DIR}/scripts/rsrc_gen.py" -C "${gen_src}" -H "${gen_inc}" "${abs_path}"
  )
endfunction()
# Sources
set(pancake_sources 
  "common/movie.cpp" 
  "common/dwarf.cpp" 
  "common/expr/compile.cpp" 
  "common/expr/parse.cpp" 
)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
  list(APPEND pancake_sources
    "windows/sm64.cpp"
  )
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
  list(APPEND pancake_sources 
    "linux/sm64.cpp"
  )
else()
  message(FATAL_ERROR "This library can only be compiled for Windows and Linux. I don't have a Mac, so I can't build Apple software.")
endif()
# Main header
set(pancake_export "${CMAKE_CURRENT_SOURCE_DIR}/export")
set(pancake_private "${CMAKE_CURRENT_SOURCE_DIR}/private")
# Generated sources
set(macro_defns_src)
pancake_rsrc_gen(macro_defns_src "resources/sm64_macro_defns.json")
list(APPEND pancake_sources ${macro_defns_src})
add_library(pancake STATIC ${pancake_sources})
set_target_properties(pancake PROPERTIES
  # Require C++17
  CXX_STANDARD 17 
  CXX_STANDARD_REQUIRED on 
)
# Include both public/private headers
target_include_directories(pancake 
  PUBLIC ${pancake_export} 
  PRIVATE ${pancake_private}
)
target_link_libraries(pancake LIEF::dep libdwarf::dep nlohmann_json::dep)
It's included in a subdirectory (src) if that matters.
