题
我想知道我怎么可以做一个便携式建立系统(步骤),我目前使用cmake,因为它便于设置在首位,只有一个拱形的目标,但是现在我必须包图书馆我发展我不知道如何是最好的方式,以使其便携式拱我测试。
我知道我需要一个配置。h定义事情取决于拱但我不知道如何自动的,这可。
任何其他方式具有一个建立系统的热烈欢迎!
解决方案
你可以使用CMake,这是很简单的。
你需要这些东西:
第一,意味着要找出配置的具体细节。例如,如果知道某些功能是不同的名称,一些平台,可以使用 TRY_COMPILE
要发现:
TRY_COMPILE(HAVE_ALTERNATIVE_FUNC
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/alternative_function_test.cpp
CMAKE_FLAGS -DINCLUDE_DIRECTORIES=xxx
)
哪里 alternative_function_test.cpp
文件在您的来源目录,汇编只与备选定义。
这将确定可变 HAVE_ALTERNATIVE_FUNC
如果汇编成功。
第二,需要使这个定义影响你的来源。要么你可以将它添加到汇编的标志
IF(HAVE_TR1_RANDOM)
ADD_DEFINITIONS(-DHAVE_TR1_RANDOM)
ENDIF(HAVE_TR1_RANDOM)
或者你可以做一个 config.h
文件。创建 config.h.in
与下面一行
#cmakedefine HAVE_ALTERNATIVE_FUNCS
并创建一个 config.h
文件通过此线 CMakeLists.txt
(见 CONFIGURE_FILE
)
CONFIGURE_FILE(config.h.in config.h @ONLY)
的 #cmakedefine
将被翻译成 #define
或 #undef
根据CMake变量。
顺便说一句,用于测试edianness,请参阅 这个邮件
其他提示
我一直在使用这为我至今运作良好的GNU的autoconf / automake的工具链。我才真正集中在Linux / x86平台(和64位)和Mac,如果你是在一个PowerPC建设是重要的,因为端的问题。
使用autoconf的,你可以检查主机平台的宏:
AC_CANONICAL_HOST
和使用检查字节序:
AC_C_BIGENDIAN
的Autoconf会再加入定义,config.h中,你可以在你的代码中使用。
我不能肯定(从未尝试过)GNU自动在Windows上如何工作,所以Windows是否是你的目标之一,那么你可能会更好找到与您现有的CMake构建系统类似的功能。
有关自动工具的好底漆,看看这里:
http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool一>