我正在寻找有关安装程序的建议.安装程序需要支持多个操作系统 - Solaris,Linux和Windows.我有三台构建机器,每台机器运行一个OS.目前使用相同的代码库 - 三种JAVA和C/C++.
我们都知道Boost.
还有哪些其他免费的C++库值得使用?为什么?它们是否可以与常见的编译器一起使用?
我正在撰写一篇关于多平台编程的论文,我想包括有关优缺点的部分.从我的理解; 任何应用程序都是多平台的,对于开发人员来说是一个巨大的卖点,因为它几乎可以使任何计算机用户成为潜在的应用程序.我只想弄清楚可能的缺点.如果有的话?
我正在从普通品牌转变为CMake作为项目的构建系统.该项目应该在不同的嵌入式Linux系统上运行,每个系统都有自己的工具链,并且每个目标也有相当多的不同配置选项(例如,不同的预处理器定义和包含/排除的一些源).它也应该在桌面Linux上工作,一些GUI模块必须在Windows上运行.
现在,CMake有其CMAKE_TOOLCHAIN_FILE选择可用于分解每个嵌入式平台的工具链和编译器特定的东西(桌面Linux和Windows不应该需要).
我想把除了CMake Wiki上列出的东西放在工具链文件中的东西不是一个好主意.
我正在考虑创建一些可以由cmake gui工具编辑的CMake变量,然后简单地if/elseif用来确定正确的设置.
有没有人有更好或更优雅的建议?
我注意到,提交包含邮件德国Umlaute当我运行显示不正确git log的混帐击在Windows上.这些提交是使用终端在Ubuntu上进行的.通常,提交消息是用英语编写的,但是当涉及到名称时,没有办法解决,例如Added library by Simon Jünker.我猜它也可能是Git Bash无法处理字符编码.但也许有一个设置强制utf-8编码在Git的任何模块(Git Gui,Git k)中编写和显示文本.
你的Git多平台字符编码设置是什么?请确保在答案中包含两个平台的配置.您还可以添加MacOS.
我有一个应该为几个目标平台构建的工件:
不幸的是,由于缺少交叉编译器,不可能一次创建所有版本的工件.
换句话说,目标是在存储库中有这样的东西
请注意,版本是同步的.怎么做到这一点?
问题是发布过程会在每次构建后升级pom.xml的版本.因此,通过在各种平台上连续构建,我可以实现
但这不是我要找的.
我可以
在Linux上运行
mvn release:prepare release:perform -DpushChanges = false
(将pushChanges设置为false发布不会增加SCM中的版本号)
然后在Windows上运行
mvn release:准备发布:执行
(这会增加版本号)
但是,我有责任以适当的顺序在各种平台上触发发布流程.有没有办法maven可以帮助我这个?
你有什么建议吗?
谢谢
PS.请注意,这不是关于如何组织模块的问题.它是关于如何在多个平台上同步单个工件的发布过程.
我正在寻找一个多进程应用程序的日志记录工具,它还包含每个进程中的多个线程.
我当前的应用程序只是多线程的,并使用ACE_Message_Queue将记录事件发送到记录器线程(实际的日志消息在应用程序线程和记录器线程之间通过全局数组共享).
我的新应用程序包含多个进程,每个进程都有多个线程.如何在这种情况下实现良好的日志记录功能?也希望摆脱ACE而支持Boost.我的新应用程序应该在Linux,Mac和Windows上运行.
先感谢您.
我使用Python unittest格式创建了一堆Python测试.
现在我可以运行它们了
python -m unittest discover -s TestDirectory -p '*.py' -v
Run Code Online (Sandbox Code Playgroud)
我找到了所有,然后运行它们.
现在,无论是在Windows上还是在Linux上运行测试,都会有细微差别.实际上,在Windows上,测试按字母顺序运行,而在Linux上,测试运行时没有明显的人类特定的可发现顺序,即使总是相同.
麻烦的是我依靠测试文件的前两个字母来排序测试的执行顺序.并不是说它们必须以特定的顺序运行,而是要进行某种信息测试,在其输出中显示版本数据首先出现在测试运行日志中.
在Linux上,我是否可以按字母顺序运行测试?
我目前正在搜索Windows Lua-IDE,它可以为我的脚本文件中的任何平台(例如windows,linux,mac os x)创建独立的可执行文件.我搜索谷歌和SO,但我找到的只是一个额外的工具.
有谁知道这种Lua-IDE?
CMake安装使用目标目录,通常使用GNUInstallDirs加载目标名称的标准值。例如:
include(GNUInstallDirs)
install(TARGETS Foo
EXPORT Foo
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
Run Code Online (Sandbox Code Playgroud)
但是,它没有提供为不同平台或体系结构构建的不同路径。我一直在通过以下方式安装到项目中特定于平台的文件夹中CMAKE_INSTALL_PREFIX:
CMAKE_INSTALL_PREFIX=dist/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}
Run Code Online (Sandbox Code Playgroud)
但是,这有一些问题:
我正在寻找一种与find_package模块模式和config模式一起使用的结构;像这样的东西:
<install_prefix>/
include/
foo/
foo.h
lib/
<PLAT x ARCH x CONFIG>/
cmake/
foo/
FooConfig.cmake
libFoo.a
Run Code Online (Sandbox Code Playgroud)
目标是:
考虑到我将在这里主要安装第三方库,如果可以通过重写GNUInstallDirs中的var来完成,那么它可能适用于许多库。我猜其余的部分要么必须进行编辑,要么我就放弃并使用包含平台和架构的单独安装目录。
multiplatform ×10
c++ ×3
cmake ×2
boost ×1
c ×1
diacritics ×1
encoding ×1
executable ×1
git ×1
ide ×1
installer ×1
logging ×1
lua ×1
makefile ×1
maven ×1
python ×1
unit-testing ×1
windows ×1