0

A CMake variable ${data} is holding multiple paths in a single line as shown below

C:/Users/s.xxx/Documents/CMake/25_10/xxxxx/xxxxx/variants/xxxxx/application/source/xxxC:/Users/s.xxxxx/Documents/CMake/25_10/xxxxx/xxxxx/variants/xxxxx/application/source/common/xxyyC:/Users/s.xxxxx/Documents/CMake/25_10/xxxxx/xxxxx/variants/xxxxx/application/source/common/yyC:/Users/s.xxxxx/Documents/CMake/25_10/xxxxx/xxxxx/variants/xxxxx/application/source/common/yyzzC:/Users/s.xxxxx/Documents/CMake/25_10/xxxxx/xxxxx/variants/xxxxx/application/source/common/zzz

How to bring like shown below using Cmake

C:/Users/s.xxx/Documents/CMake/25_10/xxxxx/xxxxx/variants/xxxxx/application/source/xxx 
C:/Users/s.xxxxx/Documents/CMake/25_10/xxxxx/xxxxx/variants/xxxxx/application/source/common/xxyy
C:/Users/s.xxxxx/Documents/CMake/25_10/xxxxx/xxxxx/variants/xxxxx/application/source/common/yy
C:/Users/s.xxxxx/Documents/CMake/25_10/xxxxx/xxxxx/variants/xxxxx/application/source/common/yyzz
C:/Users/s.xxxxx/Documents/CMake/25_10/xxxxx/xxxxx/variants/xxxxx/application/source/common/zzz

I tried to write the variable ${data} to a file test1.txt and tried as below

file(READ ${test1} testread)
string(REGEX REPLACE "C:/" "\ C:/" ${new_line_test} ${testread})
file(WRITE ${Fin_test} ${new_line_test})

Here it is hard coded specific to C:/, what if the project will run in D:/ or in Linux?

How to make it a generic conversion using CMake?

  • A variable holding multiple paths **without separator** looks like a **bad design**. You are better to introduce a separator for such kind of data. E.g., CMake itself uses semicolon (`;`) as a separator between elements in a list. PATH variable in Windows also uses semicolon (`;`) for separate paths. (In Linux PATH variable uses colon (`:`) as a separator.) – Tsyvarev Oct 26 '22 at 09:57

0 Answers0