0

I'm trying to port my AtmelStudio build system into cmake. The following line of my CMakeLists.txt will fail when I make it. I placed the "" before " " so it would run but that doesn't seem to solve it.

SET(CINC -I"C:/Program\ Files\ (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.0.90/include")
...
SET(CFLAGS "${CMX} ${CMS} ${CPTH} ${CMCU} ${CDEBUG} ${CDEFS} ${CINC} ${COPT} ${CWARN} ${CSTANDARD} ${CEXTRA} ${CY}")
SET(CMAKE_C_FLAGS ${CFLAGS})

Make will print

C:\MinGW\bin\gcc.exe   
-x c -MD;-MP;-MF;CMakeFiles/some_sequence.dir/a_util.c.obj;
-MT;CMakeFiles/some_sequence.dir/a_util.c.obj;-MT;
CMakeFiles/some_sequence.dir/a_util.c.obj 
-B;C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.0.90/gcc/dev/atmega644a 
-mmcu=atmega644a -gstabs -DSOME_CONST -I;C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.0.90/include 
-Os -Wall -Wstrict-prototypes -std=gnu99  -c -MD -MT CMakeFiles/some_sequence.dir/a_util.c.obj -MF CMakeFiles\some_sequence.dir\a_util.c.obj.d -o 
CMakeFiles\some_sequence.dir\a_util.c.obj -c C:\Projects\someboardfirmware\some_sequence\a_util.c

gcc.exe: error: Files: No such file or directory
gcc.exe: error: (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.0.90/gcc/dev/atmega644a: No such file or directory

It looks like it would interpret this line as if there were multiple strings but that doesn't make any sense to me... any idea?

jkbs1337
  • 53
  • 6
  • but... use `include_directories`? – KamilCuk Feb 07 '22 at 15:42
  • @KamilCuk I'm not exactly sure what you mean. Am I using -I incorrectly and I should use -include_directories instead? – jkbs1337 Feb 07 '22 at 15:47
  • https://stackoverflow.com/questions/13703647/how-to-properly-add-include-directories-with-cmake – KamilCuk Feb 07 '22 at 15:51
  • Backslash is used by cmake to escape the next char, regardless of whether it's used inside quotes or not. Quotes have special meaning in cmake; those do require escaping `set(CINC -I\"C:/Program\ Files\ (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.0.90/include\")` You shouldn't be setting the include directories this way. Use the [`target_include_directories()`](https://cmake.org/cmake/help/latest/command/target_include_directories.html) command (or it's non-target associated version `include_directories()` instead. – fabian Feb 07 '22 at 20:42

0 Answers0