Alan W. Irwin wrote:

install(
  CODE "
  file(GLOB USER_DOCS ${CMAKE_SOURCE_DIR}/doc/user/html/*) \n
  file(INSTALL DESTINATION ${docdir}/html/user/html
  TYPE FILE FILES \${USER_DOCS}
  )"
)
[snip]
Furthermore, I have no clue why the $ in ${USER_DOCS} has to be escaped, but
the other "$" within the file commands do not.  So all this seems very much
like magic to me in the absence of documentation.


My guess: If the last $ were not escaped, cmake would attempt to expand it to its value in the CMakeLists.txt script (where it is not defined). I assume that the INSTALL CODE signature generates a CMake script on the fly which in your case will be:

file(GLOB USER_DOCS path_to_sources/doc/user/html/*)
file(INSTALL DESTINATION path_to_docdir/html/user/html
  TYPE FILE FILES ${USER_DOCS})

where path_to_sources is whatever CMAKE_SOURCE_DIR was in your CMakeLists.txt (similarly path_to_docdir is whatever ${docdir} was there). Now, if you were to run this script, USER_DOCS will contain the proper list of files.


Just out of curiosity, is there any reason/advantage to using the above versus simply having

file(GLOB USER_DOCS ${CMAKE_SOURCE_SIR}/doc/user/html/*)
file(INSTALL DESTINATION ${docdir}/html/user/html
  TYPE FILE FILES ${USER_DOCS})

--Radu
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to