這是我第一次嘗試使用cmake,如果可能的話,我想盡可能地反饋一些關於我做什麼的問題,因爲有些問題仍然存在。使用cmake中的自動工具創建庫
在庫文件夾的CMakeLists.txt中,我創建了兩個生成文件目標:configure-antlr3c
和antlr3c
。第一個目標運行自動工具配置shell腳本,第二個運行做出可執行建庫:
# CMakeLists.txt in libantlr3c-3.1.3
add_custom_target(
configure-antlr3c
${SHELL_EXECUTABLE} configure
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(
antlr3c
${MAKE}
DEPENDS configure-antlr3c
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
的主要問題是,configure-antlr3c
目標始終是「過時的」,所以它總是會被執行即使沒有發生變化。此外,我必須生成我的cmake makefiles在一個單獨的目錄(不在我的項目的根目錄),以避免覆蓋自動工具庫的Makefile ...
有沒有人有這個問題(建設自動工具項目cmake)?如果是這樣,你的解決方案是什麼?
謝謝。
編輯:解 在根的CMakeLists.txt:
include(ExternalProject)
ExternalProject_Add(
libantlr3c
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3/configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
BUILD_COMMAND make
BUILD_IN_SOURCE 1
)
您應該將您的解決方案添加到Answer塊;不在問題中。 – jww 2017-10-27 17:46:54