title: The proper way of forcing a 32-bit compile using CMake
body: <p>Sorry that there are many similar questions, but I do find that Googling for CMake queries always yields similar-but-not-the-same scenarios, conflicting CMake commands and so on!</p>
  
  <p>I need to force my project to build 32-bit binaries because I have to link with a library which is only available as 32-bit.  I diagnosed this based on error messages such as:</p>
  
  <pre><code>/usr/bin/ld: i386 architecture of input file `*external-32bit-lib*' is incompatible with i386:x86-64 output
  </code></pre>
  
  <p>From what I gather, I should therefore use:</p>
  
  <pre><code>set (CMAKE_CXX_FLAGS "-m32")
  </code></pre>
  
  <p>This does change things - I now get several errors like:</p>
  
  <pre><code>/usr/bin/ld: i386 architecture of input file `*project-output-lib*' is incompatible with i386:x86-64 output
  </code></pre>
  
  <p>AND still get the same errors for the external library too.  I <em>think</em> this is because the <code>-m32</code> made gcc generate 32-bit binaries, but ld is still trying for 64-bit output?  Further Googling for this problem didn't give any success, so if anyone could verify that I am right and give the correct way of doing this, I would be very grateful!</p>
  
  <p>Many thanks!</p>