<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Feb 23, 2019 at 8:49 AM Jason Heeris <<a href="mailto:jason.heeris@gmail.com">jason.heeris@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>I am trying to use CMake (3.10) to build an ANSI C project that may be compiled on PC with eg. GCC, but also needs to compile with Texas Instruments' compilers for their microprocessors. So I have about a million questions.</div><div><br></div><div>According to[1] it seems like the way to do this is via a toolchain file. So I'm trying to write a toolchain file to use TI's compiler/linker/etc, which do not (always) take the same arguments as eg. GCC or Clang.<br></div><div><br></div><div>Is there a complete list of tools I can override in a toolchain file? Specifically, I want to set the C compiler, C++ compiler, assembler and linker. I know about CMAKE_C(XX)_COMPILER, but what about the others? Are they documented anywhere? (I could guess, but I don't think that's wise.)<br></div><div dir="ltr"><div><br></div><div><div>As I mentioned, TI's tools aren't the same as GCC, so I need to pare back a lot of options and start from almost-scratch (there are some commonalities). Options like "-D" and "-I" are fine, which is good because then eg. target_include_directories() still works. But certain other flags are just going to cause errors. How do I completely remove all compile flags from the generated Makefiles and replace them with my own? I can do this:<br></div></div><div><br></div><div><div><div>set(CMAKE_C_FLAGS ${MINIMAL_FLAGS} CACHE STRING "" FORCE)</div><div>set(CMAKE_C_FLAGS_DEBUG ${MINIMAL_FLAGS} CACHE STRING "" FORCE)</div><div>set(CMAKE_C_FLAGS_RELEASE ${MINIMAL_FLAGS} CACHE STRING "" FORCE)</div><div>set(CMAKE_C_FLAGS_RELWITHDEBINFO ${MINIMAL_FLAGS} CACHE STRING "" FORCE)</div><div>set(CMAKE_C_FLAGS_MINSIZEREL ${MINIMAL_FLAGS} CACHE STRING "" FORCE)</div></div><div><br></div></div><div>But I *still* see flags in the generated makefiles that I didn't put there such as "--compile_only" and "--c_file=...". How do I get rid of these and specify what's correct for my toolchain? (Also, why do I need the CACHE STRING "" FORCE options? I pulled that out of various Stackoverflow posts but I have no idea why it's necessary. Is that documented? What about the configurations... where are they listed? Do I have them all?)</div><div><br></div></div></div></div></div></div></div></div></div></blockquote><div><br></div><div>Regarding the CMAKE_<LANG>_FLAGS_<CONFIG> have a look at this blog post:</div><div><a href="https://cristianadam.eu/20190223/modifying-the-default-cmake-build-types/">https://cristianadam.eu/20190223/modifying-the-default-cmake-build-types/</a></div><div><br></div><div>You "just" need to modify the CMAKE_<LANG>_FLAGS_<CONFIG>_INIT variables, no need to force the cache entries.</div><div><br></div><div>The "Modules" CMake folder is your friend, you can see how CMake handles other compilers. </div><div>For debugging use CMake's "--trace-expand" command line parameter. </div><div><br></div><div>Cheers,</div><div>Cristian.</div></div></div></div></div>