在我的項目中,我有一個「模式」文件和實用程序,我寫的生成一個頭文件。 我使用cmake和源代碼構建來構建應用程序。如何使用cmake在源代碼中生成頭文件?
目前我必須手動重新生成頭文件然後構建應用程序。
然後我想出了這個CMakeLists.txt語句,但是他們在構建目錄中而不是在源目錄中生成頭文件。
configure_file(generator.pl generator COPYONLY)
configure_file(schema.txt.in schema.txt COPYONLY)
add_custom_command(
OUTPUT generated.h
COMMAND ./generator schema.txt generated.h
DEPENDS mib_schema.txt.in generator.pl
COMMENT "Regenerating header file..."
)
是否可以在源目錄中生成頭文件?
編輯(以反映答案):
該文件可以通過完全限定其路徑有兩種
${CMAKE_CURRENT_SOURCE_DIR}
或直接到達:
${CMAKE_CURRENT_BINARY_DIR}
所以,在我的源代碼目錄中生成頭文件,之前從CMakeLists.txt中摘錄的內容變爲:
add_custom_command(
OUTPUT generated.h
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/generator.pl ${CMAKE_CURRENT_SOURCE_DIR}/schema.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/generated.h
DEPENDS mib_schema.txt.in generator.pl
COMMENT "Regenerating header file..."
)
這實際上更簡單。 感謝
--to
其實,這是一個好主意。如果我可以將生成的文件保存在源代碼目錄中,它將包含在源代碼包中,這正是我想要的(因爲只要它們不修改生成器,我的庫的用戶不需要生成該文件, /或源數據文件)。這意味着更多的人可以編譯我的庫! – 2013-02-20 05:39:05