например, когда два приложения пишут в один файл или в одну консоль
Не большой знаток Линуксов, там поток и процесс равнозначны в плане работы std::mutex?
Но это же можно использывать по ситуации.
как собрать в cMake всё так, чтобы на компьютерах без всего этого, мой проект работал?
клиент изначально рассчитанный на использование человеком
Нужно ограничить доступ детей к пк , но необходимо чтобы он был постоянно включен и были запущены нужные программы .
По моему это c:\windows\system32 если правильно помню.
Если в батнике используются относительные пути, то он может не работать из-за этого.
Батник достаточно легко отлаживать - добавьте отладочного вывода в ключевых точках с перенаправлением в файл. Файл куда перенаправляете отладочный вывод указывайте полным путем (не относительным), иначе либо не сработает из-за отсутствия прав либо будете искать где этот файл создался.
Вообще для батников, запускаемых через планировщик полезно перенаправлять вывод всех операций в файл, т.к. консоли вы не увидите никогда, а знать что там происходит иногда бывает полезно. Особенно когда случаются какие-то сбои/ошибки.