我有一個項目,我在Linux上運行(主要),但有時在Darwin/Mac OS X上運行。我使用CMake在Linux上生成Makefiles,在Mac OS X上生成Xcode項目。到目前爲止,這一切都運行良好。如何僅在Linux上使用Linux特有的API和庫使用CMake構建?
現在我想使用一些Linux特定功能(clock_gettime()
和相關功能)。當我嘗試使用clock_gettime()
時,我在Mac OS X上遇到鏈接器錯誤,所以我認爲它僅在Linux上可用。我準備在.c文件中引入條件編譯的代碼,以便在Linux上使用clock_gettime()
,在Mac OS上使用普通的舊版clock()
。 (順便說一下,我打算使用#include <unistd.h>
和#if _POSIX_TIMERS > 0
作爲預處理器表達式,除非有人有更好的選擇。)
當涉及CMakeLists.txt文件時,事情會變得棘手。只有在跨平臺CMake項目的Linux構建下才將鏈接引入特定於Linux的API的首選方式是什麼?
注意:此問題的早期修訂包含對glibc的引用,該引用過於具體且令人困惑。這個問題實際上是在跨平臺CMake項目中使用特定於Linux的API和庫的正確方法。
你的假設是錯誤的。 'clock_gettime'是POSIX的一部分,應該可以在任何現代的兼容操作系統上使用。 – 2012-01-08 03:54:49
@R ..我試圖在Mac OS X上使用'clock_gettime()',並且出現鏈接器錯誤(相應地編輯了問題)。我錯過了什麼嗎? – 2012-01-08 05:23:34
@R ..:它是POSIX擴展的一部分。 – 2012-01-08 05:26:18