代码之家  ›  专栏  ›  技术社区  ›  Jason Harrison

如何从基于目标体系结构的cmake创建的visualstudio项目中排除源文件?

  •  1
  • Jason Harrison  · 技术社区  · 16 年前

    但是,我必须为i386和amd64构建dll,从而生成两个dll,从而包含两个c文件。我可以在编译时检查要包含哪个文件,但是我们正在使用cmake生成visualstudio项目,我希望在项目中包含正确的c文件,并排除其他文件。这将允许重建工作,防止重复符号等。

    我们通过为“VisualStudio92008”或“VisualStudio92008Win64”运行cmake来创建VisualStudio项目。似乎不可能为这两种体系结构创建一个Visual Studio项目,因此我可以简单地解析“CMAKE\u GENERATOR:INTERNAL=Visual Studio 9 2008”,并将相应的检查添加到cmakelists.txt文件中。

    下面是有关子项目的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)
    

    如您所见,有一个i386和一个amd64目录,其中包含特定于体系结构的编码二进制文件。如何调整cmakelists.txt,以便根据目标生成器排除其中一个?对于64位,我们支持VS2008和VS2010。

    1 回复  |  直到 16 年前
        1
  •  2
  •   RobertJMaynard    16 年前

    推荐文章