我正在开发一个需要定期测试和分析的共享库。主要目标平台是Linux(通常),因此我们的团队为构建系统选择了autotools(auto [scan,conf,make] + libtool + pkg-config)。然后客户决定他也想在Windows上使用他的软件。所以我添加了一个visual studio解决方案。尽管我的开发周期在Windows上缺乏适当的测试,但是库在Windows上编译,链接和工作也很好。
我正在Linux上使用automake的测试服,并测试如下:
make check -j2
编译10个可执行文件(客户端服务器对),它们链接到我的库(已经构建在同一个构建系统上)并运行它们(成对,有序)。输出是:
make[3]: Entering directory 'somefakepath/libfoo/test'
PASS: tcp_client
PASS: tcp_server
PASS: tcp_client_control
PASS: tcp_server_control
PASS: udp_client
PASS: udp_server
PASS: udp_client_raw
PASS: udp_server_raw
SKIP: udp_client_rtp
SKIP: udp_server_rtp
========================================================
Testsuite summary for libfoo 5.0.1
========================================================
# TOTAL: 10
# PASS: 8
# SKIP: 2
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
========================================================
问题是我找不到在Visual Studio中执行相同操作的方法。我可以在解决方案中添加另一个项目(使可执行文件不是库)虽然据我所知,但是不可能在visual studio [1]中的单个项目中生成多个可执行文件,[2] 。并且添加十个项目感觉不对,许多配置参数设置为每个项目的相同值...而且选择具有多个线程的单个可执行文件并不是那么好(我将不得不更改许多项目)行,合并许多[= 10]个文件。
那我怎么能在visual studio上测试我的库?或者也许可以从单个项目中的多个文件中生成多个exetable? (我可以手动运行它们)
答案 0 :(得分:1)
如果您的可执行文件之间的唯一区别是某些条件编译宏,那么您应该创建一个具有多个配置的单个可执行项目(即udp_client_raw配置,udp_server_raw 配置等)。如果它们在某些其他方面不同,您可能仍需要创建单独的项目。请注意,不需要将许多配置参数设置为相同的值 - 您可以创建一次属性表,然后将其附加到所有项目。
从单个项目生成多个可执行文件没有问题。您只需使用Visual Studio中的批量构建或命令行中的msbuild一次构建多个配置。也可以设置一个项目,将其成对启动以进行测试。