0
我試圖穿越從Ubuntu的編譯到Windows,使用CMake的。我配置了一切(安裝了mingw32和mingw64),並且我有兩個相關的工具鏈文件。問題在於,我在一個工具鏈文件中設置的變量在使用後,會在第二次運行時與其他工具鏈文件一起存在。CMake的變量運行之間持續存在的,即使它被重置
這些都是我的工具鏈文件:
的Windows 64位:(工具鏈,Ubuntu的mingw64.cmake)
set(CMAKE_SYSTEM_NAME Windows)
unset(PROCESSOR_ARCHITECTURE CACHE)
set(PROCESSOR_ARCHITECTURE x64)
message("===Processor architecture: " ${PROCESSOR_ARCHITECTURE})
set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
的Windows 32位:(工具鏈,Ubuntu的mingw32.cmake)
set(CMAKE_SYSTEM_NAME Windows)
unset(PROCESSOR_ARCHITECTURE CACHE)
set(PROCESSOR_ARCHITECTURE x86)
message("===Processor architecture: " ${PROCESSOR_ARCHITECTURE})
set(TOOLCHAIN_PREFIX i686-w64-mingw32)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
這是我的CMakeLists.txt文件的頂部:
cmake_minimum_required(VERSION 2.8)
project("project")
set(SOURCE_FILE_LIST main.c)
set(ARCH_PROJECT_NAME ${PROJECT_NAME}${PROCESSOR_ARCHITECTURE})
message("Project - " ${ARCH_PROJECT_NAME})
...
當我運行
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake-toolchains/Toolchain-Ubuntu-mingw64.cmake ../src/
輸出開頭:
===Processor architecture: x64
Project - projectx64
意想不到的部分是當我運行:
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake-toolchains/Toolchain-Ubuntu-mingw32.cmake ../src/
與
輸出 仍然開始===Processor architecture: x64
Project - projectx64
我該如何解決這個問題?
有沒有辦法設置一個變量,而不被緩存?順便說一句,我找不到PROCESSOR_ARCHITECTURE字符串在生成文件夾中的任何地方,所以我真的不知道它可以被緩存。即使它被高速緩存,它在打印之前重新設置時也應該被遮蔽 - 高速緩存不能解釋錯誤的打印信息(它位於變量設置的下方)。 – NBcode
嗯,看來CMAKE_TOOLCHAIN_FILE參數的值下建立/ CMakeFiles/複製到CMakeSystem.cmake。我認爲最好的選擇可能是爲每個平臺分別建立一個目錄。 –
NBcode