include (CheckCXXSourceCompiles) include (CMakePushCheckState) cmake_push_check_state () if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") # clang4 : -no-pie cause error # clang6 : -no-pie cause warning set (TEST_FLAG "-lc++ -lc++abi") set (CMAKE_REQUIRED_FLAGS "${TEST_FLAG}") check_cxx_source_compiles(" #include int main() { std::cerr << std::endl; return 0; } " HAVE_LIBCXX) else () cmake_push_check_state () set (TEST_FLAG "-no-pie") set (CMAKE_REQUIRED_FLAGS "${TEST_FLAG}") check_cxx_source_compiles(" int main() { return 0; } " HAVE_NO_PIE) if (HAVE_NO_PIE) set (FLAG_NO_PIE ${TEST_FLAG}) endif () endif () cmake_pop_check_state ()