visual-studio-2008 - CMake 构建 ActiveX OCX?

标签 visual-studio-2008 activex cmake ocx

我今天一直在玩 CMake,到目前为止它运行良好。我们的项目包括 100 多个 Visual Studio 2003 项目;我们想迁移到 VS2008 并最终迁移到 VS2010 并支持 makefile 构建系统(也许还有 Eclipse CDT)...因此使用 CMake 配置文件定义我们的项目并生成项目文件和 makefile 似乎是一种可能的方式。

但是,我们有大量的 OCX,我还没有找到这方面的任何例子。有人知道使用 CMake 构建 OCX 的项目吗?

谢谢! - 乔希

最佳答案

所以,花了一段时间,但这就是我设法使用 cmake 创建 activex 项目的方法。但是,我不得不说,我首先必须使用 visual studio 创建 activex 项目以生成一些文件,然后我转换为 cmake 项目。

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(MyProject)

# Very useful if project has more than one target
SET(BIN_OUTPUT_DIR ${MyProject_BINARY_DIR}/bin)
SET(LIB_OUTPUT_DIR ${MyProject_BINARY_DIR}/lib)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIR})
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIR})
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB_OUTPUT_DIR})

ADD_DEFINITIONS("-DWIN32 -D_WINDOWS -D_USRDLL")
ADD_DEFINITIONS("-D_AFXDLL -D_UNICODE -DUNICODE -D_WINDLL")
# Not sure if all this compiler flags are needed, but they reflect the default 
# parameter when creating an activex project
ADD_DEFINITIONS("/Oi /GL /Gy /Z7")
SET(CMAKE_SHARED_LINKER_FLAGS "/OPT:REF /OPT:ICF /MACHINE:X86 /SUBSYSTEM:WINDOWS /LTCG")

# I left this here just as an example it is not needed
FIND_PACKAGE(Boost)

SET(TargetName MyTarget)

FILE(GLOB mytarget_src *.cpp *.idl *.def)
FILE(GLOB mytarget_hdr *.hpp *.h)
FILE(GLOB mytarget_res *.rc *.bmp)
SOURCE_GROUP("Header Files" FILES ${mytarget_hdr})
SOURCE_GROUP("Resource Files" FILES ${mytarget_res})

# I tried to make this work, but I couldn't, so right now my project doesn't use pch's
#ADD_PRECOMPILED_HEADER(${TargetName} stdafx.h stdafx.cpp)

# The last directory is a hack, but it is needed, since the midl compiler outputs the
# tlb file there, which is later needed by the resource compiler
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}
                    ${CMAKE_CURRENT_BINARY_DIR}/${TargetName}.dir/${CMAKE_CFG_INTDIR})

ADD_LIBRARY(${TargetName} SHARED ${mytarget_src} ${mytarget_hdr} ${mytarget_res})
TARGET_LINK_LIBRARIES(${TargetName}) # It is obvious what you put here

SET_TARGET_PROPERTIES(${TargetName} PROPERTIES SUFFIX ".ocx")

关于visual-studio-2008 - CMake 构建 ActiveX OCX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1978479/

相关文章:

internet-explorer - IE11 - Crystal Reports - PrintMode ActiveX 现在显示 PDF 提示(而不是打印机提示)?

无法通过 cmake : Cannot open include file: 'zlib.h' : No such file or directory 在 Windows 上编译 libpng 1.6

c++ - ATL 宏仅适用于开发计算机

web-services - 远程调试 Web 服务时出现问题

c++ - ATL项目中如何保持全局变量值不变?

vba - VBA 中的运行时错误 429,但类已注册

asp.net - 请求失败,HTTP 状态 400 : Bad Request ( The data is invalid. ):代码库 在一台计算机上运行,​​但在另一台计算机上运行

c# - VS 2008 c# 预构建事件

c++ - CMake:找不到头文件

cmake-列表无法识别子命令FILTER