我想知道我如何制作一个可移植的构建系统(一步一步),我目前使用cmake,因为它很容易设置,只有一个拱目标,但现在我必须打包我正在开发的库我想知道如何使它成为我正在测试的可移植的最佳方法.
我知道我需要一个config.h来定义取决于arch的东西,但我不知道它是多么自动化.
任何其他方式有一个构建系统是热烈欢迎!
你可以使用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的变量.
BTW,测试edianness,请看这封邮件