我有一個Windows驅動程序工具包解決方案,可以爲打印機驅動程序構建dll。然後我將二進制文件轉換爲C代碼,並將其包含到我的源代碼中,以便可以在運行時解壓縮dll,而不必分發兩個文件,只是.exe。如何從cmake基於目標體系結構創建的Visual Studio項目中排除源文件?
不過,我必須建立i386和導致兩個dll AMD64的dll,因此兩個C文件包括。我可以在編譯時檢查包含哪個文件,但是我們正在使用cmake生成我們的Visual Studio項目,並且我想在項目中包含正確的c文件,並排除其他文件。這將使重建工作,將防止重複符號等
我們創建由不是「的Visual Studio 9 2008」或「的Visual Studio 2008年9 Win64的」運行CMake的Visual Studio項目。這似乎並不可能產生兩種架構Visual Studio項目,所以我可以簡單地解析「CMAKE_GENERATOR:INTERNAL =的Visual Studio 9 2008」,並添加到我的CMakeLists.txt文件中的相應檢查。
這裏是問題
if(WIN32)
project (StaticDriverLib)
file(GLOB DriverLib_CPP *.cpp ../MasterInstallDir/*.cpp ../MasterInstallDir/amd64/*.cpp ../MasterInstallDir/i386/*.cpp)
file(GLOB DriverLibLib_H *.hpp *.h ../MasterInstallDir/*.hpp)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../ ${CMAKE_CURRENT_SOURCE_DIR}/../MasterInstallDir)
# static DriverLibLib library
add_library(StaticDriverLibLib ${DriverLib_CPP} ${DriverLib_H})
add_dependencies(StaticDriverLib StaticLibCore)
target_link_libraries(StaticDriverLib StaticCore Version.lib Setupapi.lib kernel32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib odbc32.lib odbccp32.lib)
endif(WIN32)
的子項目的CMakeLists.txt文件正如你所看到的,有一個i386和含有特定結構編碼的二進制文件的AMD64目錄。如何調整cmakelists.txt,以便基於目標生成器排除其中一個或另一個?對於64位我們支持VS2008和即將VS2010。
感謝行之有效。 – 2010-05-08 00:15:41