我寫了一個(不那麼)小bash腳本來生成我一般makefile文件。 這些makefiles在開始時檢測主機體系結構,並以arch的名稱創建文件夾中的所有對象和輸出。cmake的 - 創建架構的makefile知道
它是這樣的:
uname_m = $(shell uname -m)
DETECTED_ARCHITECTURE=$(uname_m)
ifeq ($(ARCH), x86_64)
CFLAGS += -m64
LDFLAGS += -m64
endif
ifeq ($(ARCH), x86)
CFLAGS += -m32
LDFLAGS += -m32
endif
OUTPUT_DIR = $(DETECTED_ARCHITECTURE)/
OBJ_PREFIX_DIR = $(OUTPUT_DIR)objs/
因此,舉例來說,如果我跑讓我在我的工作電腦代碼,它的一切在家裏輸出到一個文件夾命名爲i686,到一個文件夾x86_64和上我的樹莓,armv6l。 此外,如果我做類似ARCH = i686的東西,它會正確地覆蓋檢測到的架構,以便它設置正確的編譯器選項和輸出目錄。 最終的輸出進入OUTPUT_DIR,所有生成的.o文件進入OUTPUT_DIR/objs。
我試圖做的cmake類似的東西。我看過CMake add_custom_command/_target in different directories for cross-compilation和CMAKE output directory depending on generator architecture,但我不希望體系結構依賴於生成器。我希望它依賴於編譯機器。
例如,我的代碼在我的電腦,並進行編譯。如果一切順利,我將ssh發送到我的樹莓上,通過sshfs將我的電腦上的代碼文件夾掛載到樹莓上,然後在那裏編譯它。由於所有內容都轉到不同的文件夾(armv6l vs x86_64),所以沒有衝突,我不必重新生成makefile或clean,或者其他任何文件。
所以,基本上,是有可能的cmake告訴做出一個makefile架構知道? 感謝
可能重複[如何使用CMake的檢測目標架構?](http://stackoverflow.com/questions/11944060/how-to-detect -target-architecture-using-cmake) –