@@ -197,9 +197,12 @@ void CmakeGenerator::add_app_sources_()
197197 boost::replace_all_copy (boost::to_upper_copy (std::string { mName }), " -" , " _" )),
198198 };
199199
200+ NameTargetMapper mapper (mName );
200201 for (const auto & bin : mLayout ->binaries ()) {
202+ const auto target = mapper.binary (bin.name );
201203 cmake::CmakeBin gen ({
202- .name = bin.name ,
204+ .name = target,
205+ .name_alias = bin.name ,
203206 .sources = bin.sources ,
204207 .lib = mLib ,
205208 .deps = mDeps ,
@@ -208,7 +211,7 @@ void CmakeGenerator::add_app_sources_()
208211 });
209212
210213 gen.build (mOut );
211- mBinaryTargets .emplace (bin. name );
214+ mBinaryTargets .emplace (target );
212215 }
213216}
214217
@@ -250,7 +253,7 @@ void CmakeGenerator::add_benches_()
250253find_package(benchmark REQUIRED)
251254)" ;
252255
253- NameTargetMapper mapper;
256+ NameTargetMapper mapper ( mName ) ;
254257 auto deps = mDevDeps ;
255258 deps.push_back ({
256259 .cmake_package = " benchmark" ,
@@ -264,6 +267,7 @@ find_package(benchmark REQUIRED)
264267 .sources = bin.sources ,
265268 .lib = mLib ,
266269 .deps = deps,
270+ .runtime_dir = " benches" ,
267271 });
268272
269273 gen.build (mOut );
@@ -278,13 +282,12 @@ void CmakeGenerator::add_examples_()
278282 return ;
279283 }
280284
281- NameTargetMapper mapper;
285+ NameTargetMapper mapper ( mName ) ;
282286 for (const auto & bin : examples) {
283287 const auto target = mapper.example (bin.name );
284288
285289 cmake::CmakeBin gen ({
286290 .name = target,
287- .name_alias = bin.name ,
288291 .sources = bin.sources ,
289292 .lib = mLib ,
290293 .deps = mDevDeps ,
@@ -308,13 +311,17 @@ void CmakeGenerator::add_test_sources_()
308311find_package(GTest REQUIRED)
309312)" ;
310313
311- NameTargetMapper mapper;
314+ NameTargetMapper mapper ( mName ) ;
312315 for (const auto & test : tests) {
313316 const auto target = mapper.test (test.name );
314317
315318 mOut << ' \n '
316319 << fmt::format (" add_executable({} {})\n " , target, test.sources .begin ()->generic_string ())
317- << fmt::format (" target_link_libraries({} PRIVATE GTest::gtest_main)\n " , target);
320+ << fmt::format (" target_link_libraries({} PRIVATE GTest::gtest_main)\n " , target)
321+ << fmt::format (
322+ R"( set_target_properties({} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${{CMAKE_BINARY_DIR}}/tests"))" ,
323+ target)
324+ << ' \n ' ;
318325
319326 if (mLib ) {
320327 mOut << fmt::format (" target_link_libraries({} PRIVATE {})\n " , target, *mLib );
@@ -323,7 +330,7 @@ find_package(GTest REQUIRED)
323330 mOut << fmt::format (" target_link_libraries({} PRIVATE {})\n " , target, boost::join (dep.cmake_targets , " " ));
324331 }
325332
326- mOut << fmt::format (" add_test({} {})\n " , target, target);
333+ mOut << fmt::format (" add_test(NAME {} COMMAND {})\n " , target, target);
327334 mOut << fmt::format (" set_tests_properties({} PROPERTIES LABELS {})\n " , target, mName );
328335
329336 mTestTargets .emplace (target);
0 commit comments