วิธีเพิ่มไฟล์ไปยังเป้าหมายที่ไม่สามารถเรียกทำงานได้หรือไม่ใช่ไลบรารีด้วย CMake

ฉันเข้าใจว่าสามารถเพิ่มไฟล์บางไฟล์ลงในเป้าหมายใน CMake ได้หากเป้าหมายเป็นแบบปฏิบัติการหรือไลบรารีด้วยคำสั่งต่อไปนี้:

add_executable(${target_name} ${source_files})

or add_library(${target_name} ${source_files})

คำถามของฉันคือจะเกิดอะไรขึ้นถ้าเป้าหมายไม่ใช่ไฟล์ปฏิบัติการหรือไลบรารี ฉันตั้งคำถามนี้เพราะฉันต้องการสร้างเป้าหมายสำหรับเอกสารประกอบกับ Doxygen และสามารถทำได้ด้วยคำสั่งต่อไปนี้:

find_package(Doxygen)
if(DOXYGEN_FOUND)
  set(doxyfile_in  ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) #doxygen file
  set(doxyfile    ${PROJECT_BINARY_DIR}/Doxyfile)
  #configure the doxygen file
  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxygen.in ${PROJECT_BINARY_DIR}/Doxyfile @ONLY)
  add_custom_target( doc ALL
    COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
    WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
    COMMENT "Generating API documentation with Doxygen" VERBATIM
  )
endif(DOXYGEN_FOUND)

ด้วย Visual Studio doc จะกลายเป็นเป้าหมาย และฉันต้องการเพิ่มไฟล์ Doxyfile.in ในโครงการในกรณีที่ฉันต้องเปลี่ยนตัวแปรบางตัวภายในด้วย IDE มีแนวคิดใดบ้างว่าฉันจะเพิ่มไฟล์นี้ในเป้าหมาย doc ได้อย่างไร ขอบคุณ.


person feelfree    schedule 20.02.2014    source แหล่งที่มา


คำตอบ (1)


คุณสามารถใช้อาร์กิวเมนต์ SOURCES ของ add_custom_target สำหรับสิ่งนี้:

add_custom_target( doc ALL
  COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
  WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
  COMMENT "Generating API documentation with Doxygen" VERBATIM
  SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Doxygen.in
)
person Fraser    schedule 20.02.2014