Windows下编译Infact库

40 篇文章 138 订阅
本文档介绍了如何将Google的Infact库从原始的Make构建系统转换为使用CMake。首先,你需要从GitHub克隆Infact源码,并切换到v1.0.8版本。接着,在src/infact目录下创建CMakeLists.txt文件,配置包括库名、头文件、源文件等信息,并处理MSVC下的警告。最后,通过CMake构建项目,并使用VS完成编译。该过程使Infact库能够在更多的平台上无缝构建。
摘要由CSDN通过智能技术生成

InfactGoogle研发的一套动态创建对象的C++库。其社区版本仅提供了基于Make的项目构建。而目前大多数开源系统均使用CMake作为跨平台的项目构建工具。

因此,本文提供了Infact CMake构建的方法。

一、下载源码

git clone https://github.com/google/infact.git
git checkout -b v1.0.8 v1.0.8

二、CMake配置

在src/infact目录下,新建CMakeLists.txt文件,添加以下内容,

SET(LIB_NAME Infact)

INCLUDE_DIRECTORIES(
	${CMAKE_CURRENT_SOURCE_DIR}
	${CMAKE_CURRENT_BINARY_DIR}
)

LINK_DIRECTORIES(
	${CMAKE_LIBRARY_PATH}
	${PROJECT_BINARY_DIR}/lib
)

SET(Infact_LIBS
)

# Headers
SET(Infact_HDRS
	environment.h
	environment-impl.h
	error.h
	factory.h
	interpreter.h
	stream-init.h
	stream-tokenizer.h	
)

SET(Infact_SRCS
	environment.cc
	environment-impl.cc
	error.cc
	factory.cc
	interpreter.cc
	stream-tokenizer.cc	
)

IF (MSVC)
    # Turn off deprecation warnings
    ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
    ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_WARNINGS)
ENDIF(MSVC)

ADD_LIBRARY(${LIB_NAME} STATIC ${Infact_HDRS} ${Infact_SRCS})
TARGET_LINK_LIBRARIES(${LIB_NAME} ${Infact_LIBS})

SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES DEBUG_POSTFIX "d")

# Install
SET(INSTALL_INCDIR include)
SET(INSTALL_BINDIR bin)
IF(WIN32)
    SET(INSTALL_LIBDIR bin)
    SET(INSTALL_ARCHIVEDIR lib)
ELSE(WIN32)
    SET(INSTALL_LIBDIR lib${LIB_POSTFIX})
    SET(INSTALL_ARCHIVEDIR lib${LIB_POSTFIX})
ENDIF(WIN32)

INSTALL(
    TARGETS ${LIB_NAME}
    RUNTIME DESTINATION ${INSTALL_BINDIR}
    LIBRARY DESTINATION ${INSTALL_LIBDIR}
    ARCHIVE DESTINATION ${INSTALL_ARCHIVEDIR}
)

INSTALL(
    FILES       ${HEADERS}
    DESTINATION ${INSTALL_INCDIR}/${LIB_NAME}
)

使用CMake进行项目构建,然后利用VS完成编译即可。

网络资料

Infacthttp://google.github.io/infact/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值